Гаразд, причина цього не працює - модель безпеки в Windows Vista та новіші. У обліковому записі групи адміністраторів все ще працює все, що не є явним чином обмеженим користувачем. Виняток становить Administrator
обліковий запис, на якому працює все підняте. З цієї причини, як правило, погано використовувати його в якості облікового запису для входу, і він зазвичай вимкнено.
Ви можете ввімкнути це, а потім runas
викликати цей обліковий запис. Це спричиняє кілька проблем - тепер ви працюєте із середовищем іншого користувача, у якого можуть бути встановлені різні змінні середовища. 1
Кращим способом зробити це буде фактично піднятись як ваш поточний користувач через UAC. На жаль, стандартний командний рядок не включає цю можливість - але як сторонні програми, так і вбудовані PowerShell і WSHell (VBScript) можуть це зробити.
Позичивши з моєї іншої відповіді , ви можете викликати команду PowerShell безпосередньо за допомогою powershell -c
:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
що в основному дає змогу PowerShell виконати наступне ( start
це псевдонім Start-Process
):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Хитрість тут - передача дієслова runas
, запускаючи UAC.
Ні Start-Process -Verb runas
стандартний cmd runas
не передає поточний робочий каталог , тому завжди використовуйте повний шлях у будь-яких командах, які ви підвищуєте таким чином.
Також зауважте, що деякі аргументи на кшталт -c
можуть суперечити Start-Process
аргументам, тому найбезпечнішим способом є:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Примітка: це відноситься тільки до призначеного для користувача змінному оточенню «s. Змінні середовища, встановлені у батьківському процесі , не передаються UAC ! Це також стосується runas
, і це ще гірше, тому що ви навіть не отримаєте правильну кількість користувачів.