Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Viele Batch-Skript müssen mit erhöhten Rechten ausgeführt werden, z. B. um Prozesse zu beenden oder Dienste zu starten.

Da es etwas umständlich das Skript "Als Administrator ausführen" zu starten bzw. den Umweg über eine Verknüpfung zu dem Skript gehen. wird hier eine Lösung beschrieben, die das im Skript selbst tun kann.

Code Block
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO args = "ELEV " >> "%temp%\OEgetPrivileges.vbs"
ECHO For Each strArg in WScript.Arguments >> "%temp%\OEgetPrivileges.vbs"
ECHO args = args ^& strArg ^& " "  >> "%temp%\OEgetPrivileges.vbs"
ECHO Next >> "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%SystemRoot%\System32\WScript.exe" "%temp%\OEgetPrivileges.vbs" %*
exit /B

:gotPrivileges

Das Snippet kann einfach vor einem bestehenden Skript eingefügt werden. Es prüft, ob schon erhöhte Rechte vorhanden sind. Is tdas nicht der Fall wird ein VB-Skript erzeugt, welches diese abruft und dann das eigentliche Skript startet.

Verwandte Artikel

Content by Label
showLabelsfalse
max5
spacesKB
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ("elevation","windows","batch") and type = "page" and space = "KB"
labelswindows batch elevation


Page properties
hiddentrue


Verwandte Vorgänge