metal-shot
Goto Top

CMD-Pfad ermittels als Administrator

Hallo

Mein Problem befasst den Befehl %cd%

Ich taste mich immer weiter ans Batchen herran und habe mir dazu ein "PC einrichten für Faule" Skript gebastelt.
Dort installiere ich einige Software, Kopiere ein paar Sachen und uA möchte ich nun Reg-Einträge ändern... als Beispiel die UAC deaktivieren per
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t "REG_DWORD" /d "0" /f  
klappt ja, sofern man die Batch als Administrator ausführt, wunderbar.

Jedoch führe ich meine Installation(en) von einem Stick aus, welcher je nach PC nunmal einen anderen Laufwerksbuchstaben bekommen kann.
Deswegen sind die Pfade zu meinen Installationsdatein per %CD%\Software\__.msi geschrieben.

Führe ich mein Script aber per rechter Maustaste als Administrator aus, ändert sich der Pfad der cmd selbst zu c:\Windoof\System32\cmd.exe.... entsprechend bekomme ich den System32 zurück, wenn ich %cd% auflöse.
Andersherrum, kann ich natürlich keine Reg-Einträge ändern, solange die UAC an ist und ich die CMD eben nicht als Admin ausführe.... ein Teufelskreis =)

Wie komme ich aus diesem wieder herraus? Ich möchte gerne wirklich die UAC im Zuge der Softwareinstallation in einer Batch deaktivieren. Wie kann ich den Pfad meiner Software entsprechend dem Laufwerksbuchstaben anpassen?

Hier mal mein derzeit (etwas gekürztes) script
@echo off
echo silent install
echo.
echo.
@echo off

goto check_Permissions
:check_Permissions
    echo Administratorrechte werden ermittelt...
    net session >nul 2>&1
    if %errorLevel% == 0 (
        echo Administratorrechte vorhanden
	color A
	goto weitermachen
    ) else (
        echo FEHLER: Keine Administratorrechte. Erneut ausführen mit Administratorrechten!
	color CF
	pause
    )
exit

:weitermachen
	echo UAC deaktivieren
	reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t "REG_DWORD" /d "0" /f  
	echo.
	echo.
	echo Firefox 38 (Hintergrund OHNE offenes Fenster!)
	echo Bitte kurz warten
	%cd%\Firefox_38\Firefox_Setup_38.0.5.exe -ms
	echo.
	echo.
	echo Installation Flash 17
	start /wait msiexec /qr /norestart /i %cd%\flash17\install_flash_player_17_active_x.msi
	echo.

:: hier kommt noch weitere Software...

	echo %errorlevel%
	if %errorlevel% == 0 (
	echo keine Fehler aufgetreten
	color a
	) ELSE (
	echo ES IST EIN FEHLER AUFGETRETEN
	color CF
	)
pause

Content-ID: 275648

Url: https://administrator.de/contentid/275648

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

TlBERlUS
TlBERlUS 25.06.2015 um 12:59:11 Uhr
Goto Top
Hi,

ich würde meinen durch
<code/>cd C:\Windows\System32

Grüße,

Tiberius
114757
Lösung 114757 25.06.2015 aktualisiert um 13:41:52 Uhr
Goto Top
Statt %cd%
%~dp0
nutzen. Das enthält bei jedem Aufruf egal von wo es aufgerufen wird den tatsächlichen Pfad zum Script.

Gruß jodel32
clSchak
clSchak 25.06.2015 um 12:59:33 Uhr
Goto Top
Hi

in dem du die Pfadangabe mitgibst und nicht mit %cd% arbeitest, z.B. via \\sharename.fqdn\pfad\pfad\datei.exe das funktioniert auch. Mit einem Stick rumrennen ist eine vergleichsweise schlechte Idee, da kannst das besser via PSEXEC remote (über Netzwerkshares) machen oder direkt über GPO verteilen.

Alternativ eine Softwareverteilung verwenden (es gibt auch kostenlose) und wenn du regelmäßig ganze Clients bereitstellen musst kann ich dir Microsoft WDS empfehlen, das ist zwar ein wenig Arbeit zum einrichten erspart aber nach hinten hinaus einiges an Arbeit.

Gruß
@clSchak
metal-shot
metal-shot 25.06.2015 um 14:12:42 Uhr
Goto Top
Genau das ist es!!

Klappt super


Ich führe das ganze von einem Stick aus, weil die PCs teils nichts ins Netzwerk kommen und schon gar nicht in eine Domäne. Es sind EinzelPCs, die vorbereitet werden für die Kunden und eben diese Standartsachen kommen immer rauf. Daher einfach Stick rein, Batch ausführen und erst mal selbst werkeln lassen.

Danke