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
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
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 275648
Url: https://administrator.de/contentid/275648
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
4 Kommentare
Neuester Kommentar
Statt %cd%
nutzen. Das enthält bei jedem Aufruf egal von wo es aufgerufen wird den tatsächlichen Pfad zum Script.
Gruß jodel32
%~dp0
Gruß jodel32
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
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