Главная

Friday, 17 May 2019

Имитация меню "Запуск от имени Администратора".

Всем привет.

Вам знакомо что частенько инсталляцию нового софта в Windows надо запускать с повышением прав. Нажимаем правой клавишей мыши по файлу программы, выбираем пункт "Запуск от имени Администратора". Делов то. Но вот так случилось что пару раз я забыл это сделать. И новый софт вместо своей инсталляции просто удалил старую версию.

Я подумал как же написать командный файл который может это сделать за меня. Разумеется ничего дополнительно мы не ставим, это не в наших правилах. Фишка с системной командой RunAs не годиться ибо она норовит либо спросить пароль админа либо его запомнить. А мне надо всего лишь имитировать вызов пункта меню "Запуск от имени Администратора".

После недолгих поисков был найден вариант скрипта powershell Runas1.ps1:

$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)

$process.WaitForExit()

do
{
    [System.Threading.Thread]::Sleep(0)
}
while (!$process.HasExited)

Exit $process.ExitCode

Который надо запускать на выполнение вот так:
powershell -File Runas1.ps1 cmd.exe /K echo "Runas Admin for next command"

В этом случае мы получаем окошко с правами  Администратора. Где уже можем просто толкать на выполнение наш инсталлятор.

Есть советы в сети использовать для этого утилиту PSEXEC. Правда ваша, хороший инструмент, но ведь он не штатный.

Успехов.

No comments:

Post a Comment

А что вы думаете по этому поводу?