Вчера я потратил некоторое время на запуск скрипта из командной строки от имени администратора.
Мне нужен эквивалент щелчка правой кнопкой мыши> «Запуск от имени администратора»:
Чтобы при запуске скрипта появлялся запрос от UAC
Полезность runas.exe Меня это не удовлетворило, потому что.
для этого требуется явное имя пользователя, пароль или сохраненные учетные данные.
«Сторонние» утилиты я даже не рассматривал — я сам наделаю ошибок в коде, зачем мне чужие? :) Попробовав несколько вариантов, я остановился на собственном скрипте для PowerShell:
PS C:\Users\psg> Start-Process 'cmd.exe' -Verb RunAs -Wait Start-Process : Access is denied At line:1 char:14 + Start-Process <<<< 'cmd.exe' -Verb RunAs -Wait + CategoryInfo : NotSpecified: (:) [Start-Process], Win32Exception + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.StartProcessCommandНа самом деле это вызов ШеллExecuteEx() с параметром lpVerb="RunAs".
Использовать командлет Старт-Процесс У меня не получилось, потому что.
если одновременно указать параметры -Verb RunAs и -Wait, то вылетает с ошибкой: $ErrorActionPreference = 'Stop'
$si = New-Object System.Diagnostics.ProcessStartInfo
$si.FileName = $args[0]
$si.Arguments = [String]::Join(' ', $args[1.($args.Count - 1)])
$si.Verb = 'RunAs'
$si.UseShellExecute = $true
$process = [System.Diagnostics.Process]::Start($si)
# Very strange code.
# But I spy it in MSBuild.
# I hope these guys know what they are doing! :)
$process.WaitForExit()
do
{
[System.Threading.Thread]::Sleep(0)
}
while (!$process.HasExited)
Exit $process.ExitCode
Однако, может быть, я просто плохо искал, и нужная мне утилита все еще существует?.
В таком случае буду рад вашим комментариям! Теги: #PowerShell #Windows 7 #uac
-
Секрет Счастливой Семьи Клиентов Hp
19 Oct, 24 -
Космические Призраки
19 Oct, 24 -
Java С Matlab
19 Oct, 24 -
Джинни: Поиск Фильмов По Настроению
19 Oct, 24