Как создать ярлык запуска от имени администратора с помощью Powershell
в моем сценарии PowerShell я создаю ярлык для a .exe (используя что-то похожее на ответ от этот вопрос):
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$HomeDesktopColorPix.lnk")
$Shortcut.TargetPath = "C:Program Files (x86)ColorPixColorPix.exe"
$Shortcut.Save()
теперь, когда я создаю ярлык, как добавить в скрипт, чтобы он по умолчанию работал как администратор?
1 ответов
этот ответ является переводом PowerShell отличного ответа на этот вопрос как я могу использовать JScript для создания ярлыка, который использует "Запуск от имени администратора".
короче говоря, вам нужно прочитать .файл lnk в виде массива байтов. Найдите байт 21 (0x15) и измените бит 6 (0x20) на 1. Это флаг RunAsAdministrator. Затем вы пишете массив байтов обратно в.файл lnk.
в коде это будет выглядеть так:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()
$bytes = [System.IO.File]::ReadAllBytes("$Home\Desktop\ColorPix.lnk")
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON
[System.IO.File]::WriteAllBytes("$Home\Desktop\ColorPix.lnk", $bytes)
Если кто-нибудь хочет изменить что-то еще в .LNK
файл, на который вы можете ссылаться официальная документация Microsoft.