Ok, powodem tego nie jest model bezpieczeństwa w systemie Windows Vista i nowszych. Konto w grupie administratorów nadal uruchamia wszystko, co nie jest jawnie podniesione jako ograniczony użytkownik. Wyjątkiem jest Administrator
konto, które uruchamia wszystko podniesione. Z tego powodu korzystanie ze swojego konta logowania jest ogólnie złe, i zwykle jest wyłączone.
Możesz go włączyć, a następnie runas
wywołać jako to konto. To wprowadza kilka problemów - teraz pracujesz w środowisku innego użytkownika, który może mieć ustawione różne zmienne środowiskowe. 1
Lepszym sposobem na osiągnięcie tego byłoby podniesienie poziomu twojego obecnego użytkownika za pomocą UAC. Niestety standardowy wiersz poleceń nie zawiera tej możliwości - ale mogą to zrobić zarówno programy innych firm, jak i wbudowane PowerShell i WSHell (VBScript).
Pożyczając z mojej innej odpowiedzi , możesz wywołać polecenie PowerShell bezpośrednio za pomocą powershell -c
:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
który w zasadzie mówi PowerShellowi, aby uruchomił następujące ( start
jest aliasowany Start-Process
):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Sztuczka polega na przekazaniu czasownika runas
, uruchamiając UAC.
Ani Start-Process -Verb runas
standardowy cmd runas
nie przejdzie do bieżącego katalogu roboczego , więc zawsze używaj pełnej ścieżki w poleceniach podniesionych w ten sposób.
Zauważ też, że niektóre argumenty, takie jak, -c
mogą kolidować z Start-Process
argumentami, więc najbezpieczniejszym sposobem jest:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Uwaga: dotyczy to tylko dla użytkowników zmiennych środowiskowych „s. Zmienne środowiskowe ustawione w procesie nadrzędnym nie są przekazywane przez UAC ! Dotyczy to również runas
, a nawet gorzej, ponieważ nie dostaniesz nawet różnych użytkowników.