Podniesienie praw z commandline
UAC jest super. I nawet jak ktos w to nie wierzy, to nie zmieni to mojego zdania. Klopotliwy sie staje tylko wtedy, kiedy mamy do czynienia z commandline. Uruchomic cmd.exe jest prosto. Uruchomic cmd.exe z podniesionymi przywilejami tez nietrudno dzieki sprytnemu skrótowi klawiaturowemu. A jak mam ochote na podniesienie przywilejów tylko dla jednego polecenia? Na przyklad dla net start costam?
Mozna miec stale wlaczone dwie konsole. Standardowa i administratorska. Ale to troszke przeczy idei UAC, mimo ze jest calkiem wygodne.
A mozna napisac sobie dwa krótkie skrypty:
Elevate.cmd o zawartosci:
@start wscript //nologo "elevate.vbs" %*
Oraz elevate.vbs skladajacy sie z:
Set objShell = CreateObject("Shell.Application")
strApplication = WScript.Arguments(0)
strArguments = ""
For I = 1 to WScript.Arguments.Count-1
strArguments = strArguments & " " & WScript.Arguments(I)
Next
objShell.ShellExecute strApplication, strArguments, "", "runas"
Nie jestem programista, a jak czasem cos musze napisac – VBS omijam z daleka. Wiec prosze o uwagi i poprawki. Na moje niefachowe oko wydaje sie, ze skrypt dziala i mozna poprzez polecenie elevate xxx wywolac dowolne polecenie z podniesionymi przywilejami. W praktyce, sens ma wrzucenie plików cmd i vbs do katalogu znajdujacego sie w zmiennej %path% dzieki czemu ich uzycie bedzie proste i przyjemne.
Autor: Grzegorz Tworek
PS.
A w PowerShell wystarczyloby:
(new-object -com "shell.application").shellexecute("aplikacja", "parametry", "", "runas")