[GELÖST] Win10 - Druckertreiber - Installationsproblem wg. Berechtigung

Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Script zur Installation von Druckertreibern funktioniert nicht

Beitrag von n.wenselowski »

Hi,

opsi läuft als System-User - der darf nicht alles.
Manchmal hilft ein /RunElevated.


Gruß

Niko

Code: Alles auswählen

import OPSI
WSler
Beiträge: 11
Registriert: 28 Okt 2015, 13:42

Re: Script zur Installation von Druckertreibern funktioniert nicht

Beitrag von WSler »

Guten Morgen zusammen,

@n.wenselowski:
Danke für den Vorschlag, dieser Parameter war mir bis dato gar nicht bekannt :shock:
Ich habe nun also meinen Aufruf der Batch um den Parameter /RunElevated ergänzt... Ich verzweifel langsam, aber das hat leider auch nichts gebracht.

Allerdings ist mir noch einmal was neues aufgefallen: Wenn ich diese Scriptzeile als Admin per Batch ausführe,

Code: Alles auswählen

rundll32 printui.dll,PrintUIEntry /ia /m "$Typ_Drucker$" /h "x64" /v "Typ 3 - Benutzermodus" /f "$Driverpath_Drucker$" /u /w
dann taucht plötzlich eine GUI auf, die mich nach Elevation fragt. Diese müsste aber eigentlich durch den Parameter /w unterdrückt werden.

Vielen Dank für die Bemühungen,

MfG
WSler
WSler
Beiträge: 11
Registriert: 28 Okt 2015, 13:42

Re: Script zur Installation von Druckertreibern funktioniert nicht

Beitrag von WSler »

Update:

Ich werde es jetzt mal mit dem opsi-template-with-admin probieren... wobei mir der Gedanke mit den Restarts nicht gefällt...

Gibt es noch eine andere Möglichkeit, ein Setup als Admin auszuführen, wobei nicht neugestartet werden muss?

Eine Batch per "Runs as Administrator" auszuführen kommt leider nicht in Frage, da wir unter Windows 10 den lokalen Admin deaktiviert halten wollen.

Ich habe inzwischen eine Batch geschrieben, die den Opsijob temporär komplett übernimmt (wenn ich sie als Administrator starte).
Hier ein Ausschnitt mit dem wichtigsten, wem es hilft...

Code: Alles auswählen

echo ##############################################################################
echo #######                                                     ##################
echo #######        Wähle den Treiber aus:                       ##################
echo #######-----------------------------------------------------##################
echo ####### 1. Kyocera TASKalfa 250ci KX                        ##################
echo #######-----------------------------------------------------##################
echo ####### 21. Kyocera TASKalfa 300i KX                        ##################
echo ####### 22. Kyocera TASKalfa 300i KX                        ##################
echo ####### 23. Kyocera TASKalfa 300i KX                        ##################
echo #######-----------------------------------------------------##################
echo ####### 31. Kyocera TASKalfa 3010i KX                       ##################
echo ####### 32. Kyocera TASKalfa 3010i KX                       ##################
echo #######-----------------------------------------------------##################
echo ####### 4. Kyocera TASKalfa 3050ci KX                      ##################
echo #######                                                     ##################
echo ##############################################################################
:auswahl
Set /p drivernr=
rem ============================================================================================================================================================================================================
if %drivernr%==1 (
echo Installiere Kyocera TASKalfa 250ci KX 
rundll32 printui.dll,PrintUIEntry /if /b "Kyocera TASKalfa 250ci KX" /f "\\Pfad\zum\Treiber\OEMSETUP.INF" /r "IP-Adresse eintragen" /m "Kyocera TASKalfa 250ci KX" 
goto :ende)

rem ============================================================================================================================================================================================================
echo Bitte eine andere Eingabe machen
goto :auswahl

:ende
echo ##############################################################################
echo #######        Installation abgeschlossen...                ##################
echo #######        1. Weiterer Drucker                          ##################
echo #######        2. Ende                                      ##################
echo ##############################################################################
Set /p choice=
if %choice%==1 (goto:start)
if %choice%==2 (goto:eof)
goto :ende

goto :eof

:eof
WSler
Beiträge: 11
Registriert: 28 Okt 2015, 13:42

Re: Script zur Installation von Druckertreibern funktioniert nicht

Beitrag von WSler »

Lösung:

Hallo zusammen,

Ich habe das Problem in etwa Lösen können.
Für alle, die einmal vor einem ähnlichen Problem stehen:

Ich habe mir eine Batchdatei angelegt, die extern vom Setup.ins Script liegt. Inhalt ist folgender:

Code: Alles auswählen

rundll32 printui.dll,PrintUIEntry /if /b "Hier steht der Druckername" /f "Pfad\zur\inf\Datei" /r "Hier ist die IP-Adresse drin" /m "Hier steht der Druckertyp" 
Diese Batch muss als Administrator ausgeführt werden... Das geschieht per "RunAs"
Weil ich jetzt aber mein Administratorpasswort so ungern irgendwo "frei" lesbar reinschreibe, habe ich ein AutoIT-script verfasst und dieses als .EXE kompiliert. Der Inhalt ist in etwa Folgender:

Code: Alles auswählen

RunAs("Administrator",@ComputerName,"Trage dein Passwort für Administrator ein","","Trage hier die Bat mit Pfad ein")
So nun habe ich eine .Bat und eine .EXE, die diese .Bat ausführt.

Nun binde ich den Spaß in mein Opsi-script ein und schon läuft der Spaß:

Code: Alles auswählen

; Task:		Install Printer W10
;==================================================================================================================================================================================================================
; INFO: Um Eigenschaften des Druckers zu bearbeiten, muss die Install.bat angepasst werden.
;==================================================================================================================================================================================================================

[actions]
DefVar $msversion$
DefVar $Name_Drucker$
DefVar $Typ_Drucker$
DefVar $IP_Drucker$
DefVar $Port_Drucker$
DefVar $Driverpath_Drucker$
DefVar $Driverpath_Drucker_Reg$
DefVar $IP_Computer$
DefVar $SystemType$
DefVar $Installpath$
;==================================================================================================================================================================================================================
; Hier entsprechende Anpassungen machen:
;==================================================================================================================================================================================================================
set $msversion$ = GetMsVersionInfo
Set $Name_Drucker$ ="Druckername eintragen"
Set $Typ_Drucker$ ="Druckertyp eintragen"
Set $IP_Drucker$ = "IP eintragen"
Set $Port_Drucker$ = "Port eintragen"
Set $IP_Computer$ = "%PCName%"
Set $SystemType$	= GetSystemType
;==================================================================================================================================================================================================================
ShowBitmap /3 "%scriptpath%\printer.png" "Druckertreiber"

;==================================================================================================================================================================================================================
;Installiertes Betriebssystem ueberpruefen
if CompareDotSeparatedNumbers($msversion$,"5.2") < "0.1"
	comment "Installiertes OS: WindowsXP"
	comment "Dieses Betriebssystem wird nicht mehr unterstützt!"
	isFatalError
	;---------------------------------------------------------------------------------
	;--	Hier wurde früher Windows XP Treiber installiert -> nicht mehr benötigt     --
	;--	Set $Driverpath_Drucker$ = "%ScriptPath%\32bit\XP and newer\OEMSETUP.INF"   --
	;--	Set $Driverpath_Drucker_Reg$ = "%ScriptPath%\32bit\xp-32.reg"               --
	;---------------------------------------------------------------------------------
else
	if CompareDotSeparatedNumbers($msversion$,"6.2") < "0.1"
		comment "Installiertes OS: Windows7"
	else 
		if CompareDotSeparatedNumbers($msversion$,"10.1") < "0.1"
			comment "Installiertes OS: Windows 10"
		else
			comment "Dieses Betriebssystem wird leider nicht unterstützt."
			isFatalError
		endif
	endif
endif
;==================================================================================================================================================================================================================´
Winbatch_copy
Registry_install_Printport	
Winbatch_restart_spool
Winbatch_install_Printer
sleepseconds 10
DosInAnIcon_set_rights
Files_Delete
;==================================================================================================================================================================================================================
[Registry_install_Printport]
OpenKey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\$IP_Drucker$]
Add "Protocol" = REG_DWORD:00000001
Add "Version" = REG_DWORD:00000001
Add "HostName" = "$IP_Drucker$"
Add "IPAddress" = "$IP_Drucker$"
Add "HWAddress" = ""
Add "PortNumber" = REG_DWORD:$Port_Drucker$
Add "SNMP Community" = "public"
Add "SNMP Enabled" = REG_DWORD:00000001
Add "SNMP Index" = REG_DWORD:00000001

[winbatch_restart_spool]
net.exe stop Spooler
net.exe start Spooler

[DosInAnIcon_set_rights]
%ScriptPath%\prg\setacl -on "\\$IP_Computer$\$Name_Drucker$" -ot prn -actn ace -ace "n:Jeder;p:full"

[Files_Delete]
delete -sf C:\tmp\driver

[Winbatch_copy]
xcopy "%ScriptPath%\64bit" "C:\tmp\driver" /E /Y /I

[Winbatch_install_Printer]
C:\tmp\driver\RunAsAdmin.exe
Ich weiß nicht ob es das schönste ist, aber ich hoffe ich konnte helfen.
Ich bedanke mich auch für eure Bemühungen.

MfG
WSler
Antworten