Batch direkt mit UAC (Kontensteuerungsabfrage) und übergebenen Argumenten starten.
Die übergebenen Argumente mit dem momentanen Code-Stand gehen verloren.
Einen schönen Tag!
Mit dem Code unten ist es möglich den Batch direkt mit UAC zu starten, ohne den Umweg über das Kontextmenü "Als Administrator ausführen".
Da ich viele Batch-Dateien mit Argumente starte, ist der momentane Code-Aufbau halb so nützlich, da das übergebene Argument verloren geht.
Seit einiger Zeit habe ich viele Tricks ausprobiert, um das Argument an die sich neu öffnende CMC-Prozedur erzwungen weiterzuleiten aber leider schaffe ich es nicht alleine, komme nicht weiter und möchte euch um eure Hilfe bitten.
Das eigentliche Problem ist in diesem Code-Aufbau, dass die erste CMD-Prozedur geschlossen und eine neue CMD-Prozedur über VB-Skript aufgerufen wird und da ist die wesentliche Schwachstelle momentan.
Gibt es nun eine Möglichkeit zumindest die ersten fünf Argumente übergeben zu können?
So sieht der Code aus:
Ich bedanke mich sehr für eure Ideen und Hilfe ganz herzlich!
Gruß
evinben
Einen schönen Tag!
Mit dem Code unten ist es möglich den Batch direkt mit UAC zu starten, ohne den Umweg über das Kontextmenü "Als Administrator ausführen".
Da ich viele Batch-Dateien mit Argumente starte, ist der momentane Code-Aufbau halb so nützlich, da das übergebene Argument verloren geht.
Seit einiger Zeit habe ich viele Tricks ausprobiert, um das Argument an die sich neu öffnende CMC-Prozedur erzwungen weiterzuleiten aber leider schaffe ich es nicht alleine, komme nicht weiter und möchte euch um eure Hilfe bitten.
Das eigentliche Problem ist in diesem Code-Aufbau, dass die erste CMD-Prozedur geschlossen und eine neue CMD-Prozedur über VB-Skript aufgerufen wird und da ist die wesentliche Schwachstelle momentan.
Gibt es nun eine Möglichkeit zumindest die ersten fünf Argumente übergeben zu können?
So sieht der Code aus:
:Batch mit erhöhten Rechten (mit Kontensteuerungsabfrage) starten.
:Eine Alternative zur Auswahl der Kontextmenü-Option "Als Administrator ausführen" mit Rechtsklick über der Datei.
@echo off
@prompt -$G
chcp 1252 >nul
echo.
:--------------------------------------
:Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Administrator-Rechte anfordern...
goto UACPrompt
) else (goto gotAdmin)
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute %0, "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
call: Exit /b
:gotAdmin
if exist "%temp%\getadmin.vbs" (Del "%temp%\getadmin.vbs")
Pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
:Code zum Ausführen.
:=================================
:Z. B.
takeown /f %1 && icacls %1 /grant Administratoren:F
pause >nul
Ich bedanke mich sehr für eure Ideen und Hilfe ganz herzlich!
Gruß
evinben
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183908
Url: https://administrator.de/contentid/183908
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
8 Kommentare
Neuester Kommentar
Hier der vergessene Link:
http://www.vb-paradise.de/programmieren/visual-basic-script-vbs-active- ...
http://www.vb-paradise.de/programmieren/visual-basic-script-vbs-active- ...
Hallo evinben!
Rein "handwerklich" eher so:
- wobei ich mich frage, woher "%ArgumentA%" kommen soll ...
Grüße
bastla
Rein "handwerklich" eher so:
:Batch mit erhöhten Rechten (mit Kontensteuerungsabfrage) starten.
:Eine Alternative zur Auswahl der Kontextmenü-Option "Als Administrator ausführen" mit Rechtsklick über der Datei.
@echo off
prompt -$G
chcp 1252 >nul
echo.
:--------------------------------------
:Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" && goto :gotAdmin
Echo Administrator-Rechte anfordern...
set "Params=%*"
>"%temp%\getadmin.vbs" Echo CreateObject("Shell.Application").ShellExecute "%~f0","%Params:"=""%",,"runas",1
"%temp%\getadmin.vbs"
Exit /b
:gotAdmin
del "%temp%\getadmin.vbs" 2>nul
Pushd "%~dp0"
:--------------------------------------
:Code zum Ausführen.
:=================================
:Z. B.
takeown /f %1 && icacls "%ArgumentA%" /grant Administratoren:F
popd
Grüße
bastla
Hi,
probiere deine Batches doch ohne deinen ganzen Kram zur Rechtemanipulation aus:
Ob's funktioniert, wirst du sehen, keine Garantie.
http://technet.microsoft.com/de-de/library/dd638389(v=ws.10).aspx
Gruß
probiere deine Batches doch ohne deinen ganzen Kram zur Rechtemanipulation aus:
Set __COMPAT_LAYER=RunAsInvoker
start "" {Pfad\}Programmname.exe Parameter
Ob's funktioniert, wirst du sehen, keine Garantie.
http://technet.microsoft.com/de-de/library/dd638389(v=ws.10).aspx
Gruß