Verständnisfragen zu einer Batch die einer CMD Administrative Berechtigung verleiht
Moin Moin,
wie der Titel schon sagt, Ich verstehe ein paar Punkte in einer Batch nicht.
Ich habe in einem Forum den unten beschrieben Snip gefunden.
Er funktioniert einwandfrei.
Und ist kein Bug wie manche vielleicht voreilig denken
Er fragt nur ab ob Adminrechte für das Skript vorhanden sind.
Wenn nicht startet er eine UAC Abfrage wo man sich mit Adminrechten authentifizieren muss.
Gleichzeitig macht er damit eine elevated Version des Skript.
Ich liebe den Snipp
Ich habe nur ein paar Verständnisfragen.
Ich lese daraus das er noch einmal abfragt ob elevated rechte vorhanden sind. Wenn ja überspringe und gehe zu dem eigentlichen Skript.
Nur,
was meint
und was
Bzw, wie kann Ich das in einem andere Kontext verwerten
Nach viel Überlegen ist mir dann in den Sinn gekommen das Echo ja nicht nur auf dem Monitor ausgibt. Nutze Ich selbst ja auch
Wald, Bäume und so.
Sprich der Punkt sagt "Schreibe Set UAC ... in die .vbs und führe diese aus."
Beim Zusammentragen habe Ich natürlich nachgeschlagen, und einiges selbst beantwortet was Ich an Fragen hatte.
Da ist mir auch dieser Post aufgefallen:
https://www.winhelponline.com/blog/vbscripts-and-uac-elevation/
Wenn man sich aber DIE .vbs anschaut sind die um einiges aufwendiger
Dieses Snippet ist cool.
Die Größe ist nur der "Sauberkeit" des Code anzulasten.
Ich glaube Ich müßte mich ein wenig wieder mal mit VBS rumschlagen.
Ich wollte eigentlich meine Zeit eher in PS stecken.
Aber auf massiv vielen Kunden systemen ist PS arg beschränkt.
Und Ich mache Unterstützung für Aussendienstler die vom Level "Kollege" bis Super DAU sind.
Was Ich mit PS versucht habe war mir zuviel negative Rückmeldung.
Und das was gemacht werden soll ist nichts was die CMD nicht schafft ohne verbiegen
FAZIT:
Im Prinzip haben sich wie schon erwähnt meine Fragen in Luft aufgelöst bis auf was "shif /It &" genau macht.
Aber vielleicht ist es eine Anregung für Leute die sich in die Batch Welt reinwagen
So long
Tom
wie der Titel schon sagt, Ich verstehe ein paar Punkte in einer Batch nicht.
Ich habe in einem Forum den unten beschrieben Snip gefunden.
Er funktioniert einwandfrei.
Und ist kein Bug wie manche vielleicht voreilig denken
Er fragt nur ab ob Adminrechte für das Skript vorhanden sind.
Wenn nicht startet er eine UAC Abfrage wo man sich mit Adminrechten authentifizieren muss.
Gleichzeitig macht er damit eine elevated Version des Skript.
Ich liebe den Snipp
Ich habe nur ein paar Verständnisfragen.
- if /I '%1'=='ELEV' (shif /It & goto gotPrivileges)
Ich lese daraus das er noch einmal abfragt ob elevated rechte vorhanden sind. Wenn ja überspringe und gehe zu dem eigentlichen Skript.
Nur,
was meint
- 'ELEV'
und was
- shif /It & goto
Bzw, wie kann Ich das in einem andere Kontext verwerten
- ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
- ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
- "%temp%\OEgetPrivileges.vbs"
- exit /B
Nach viel Überlegen ist mir dann in den Sinn gekommen das Echo ja nicht nur auf dem Monitor ausgibt. Nutze Ich selbst ja auch
Wald, Bäume und so.
Sprich der Punkt sagt "Schreibe Set UAC ... in die .vbs und führe diese aus."
Beim Zusammentragen habe Ich natürlich nachgeschlagen, und einiges selbst beantwortet was Ich an Fragen hatte.
Da ist mir auch dieser Post aufgefallen:
https://www.winhelponline.com/blog/vbscripts-and-uac-elevation/
Wenn man sich aber DIE .vbs anschaut sind die um einiges aufwendiger
Dieses Snippet ist cool.
Die Größe ist nur der "Sauberkeit" des Code anzulasten.
Ich glaube Ich müßte mich ein wenig wieder mal mit VBS rumschlagen.
Ich wollte eigentlich meine Zeit eher in PS stecken.
Aber auf massiv vielen Kunden systemen ist PS arg beschränkt.
Und Ich mache Unterstützung für Aussendienstler die vom Level "Kollege" bis Super DAU sind.
Was Ich mit PS versucht habe war mir zuviel negative Rückmeldung.
Und das was gemacht werden soll ist nichts was die CMD nicht schafft ohne verbiegen
FAZIT:
Im Prinzip haben sich wie schon erwähnt meine Fragen in Luft aufgelöst bis auf was "shif /It &" genau macht.
Aber vielleicht ist es eine Anregung für Leute die sich in die Batch Welt reinwagen
So long
Tom
:Begin_toget_rights
:: Automatically check & get admin rights
::
:: A sincere Thanks to Matt (http://stackoverflow.com/users/1016343/matt) over @ Stackoverflow.com (http://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-admin-rights) for sharing this great piece of scripting.
::
:checkPrivileges
NET FILE 1>NUL 2>NUL
if /I '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if /I '%1'=='ELEV' (shif /It & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************
setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /B
cls
:gotPrivileges
Please also mark the comments that contributed to the solution of the article
Content-ID: 503450
Url: https://administrator.de/contentid/503450
Printed on: December 2, 2024 at 18:12 o'clock
1 Comment
Hi,
ob das jetzt so cool ist, ich weiß nicht ...
Zum einem: Wenn schon der Umweg über VBS, warum dann nicht gleich alles in VBS?
Zum anderen: Wenn man diese Batch schon eleviert startet, sei es aus einer elevierten CMD oder über das Kontextmenü des Explorers, dann fragt es trotzdem nochmal die Adminanmeldung ab, weil ja da der Parameter ELEV nicht angegeben ist, oder? Ich hab es nicht ausprobiert.
Und: Wenn Du mit Powershell arbeiten willst, dann sei Dir gesagt, dass Du dort auch ganz einfach auf Shell.Application zurückgreifen kannst, bzw. Du kannst sogar dierekt abfragen, ob Du schon eleviert läufst. Suche einfach mal nach "PowerShell detect if elebated" oder sonähnlich. Da wirst Du garantiert fündig.
ob das jetzt so cool ist, ich weiß nicht ...
Zum einem: Wenn schon der Umweg über VBS, warum dann nicht gleich alles in VBS?
Zum anderen: Wenn man diese Batch schon eleviert startet, sei es aus einer elevierten CMD oder über das Kontextmenü des Explorers, dann fragt es trotzdem nochmal die Adminanmeldung ab, weil ja da der Parameter ELEV nicht angegeben ist, oder? Ich hab es nicht ausprobiert.
Und: Wenn Du mit Powershell arbeiten willst, dann sei Dir gesagt, dass Du dort auch ganz einfach auf Shell.Application zurückgreifen kannst, bzw. Du kannst sogar dierekt abfragen, ob Du schon eleviert läufst. Suche einfach mal nach "PowerShell detect if elebated" oder sonähnlich. Da wirst Du garantiert fündig.