Запуск От Имени Администратора Из Командной Строки

Вчера я потратил некоторое время на запуск скрипта из командной строки от имени администратора.

Мне нужен эквивалент щелчка правой кнопкой мыши> «Запуск от имени администратора»:

Запуск от имени администратора из командной строки

Чтобы при запуске скрипта появлялся запрос от 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

Вместе с данным постом часто просматривают: