Как создать ярлык для запуска приложения с правами администратора в cmd-строке?
У меня есть установщик (Inno-Setup), который устанавливает мое приложение на путь, определенный пользователем. В конце установки я хочу создать ярлык, который запускает приложения с правами администратора. Решение должно работать на всех версиях win от winXP до Win7.
Что я могу сделать для этого?
Я знаю, что это возможно с помощью пакетного скрипта, который выполняет неприятный VB-скрипт. Недостатком является то, что всплывающее окно cmd-window и оно работает только на Win7, я думаю.
Я также попробовал команду mklink
создать гиперссылку, но она не работает, потому что невозможно передать аргумент, который устанавливает привилегии администратора.
3 ответов
вы можете добавить раздел реестра, который говорит windows, чтобы выполнить вашу программу в качестве администратора:
под HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
, просто добавьте ключ (REG_SZ)<Path to your exe>
со значением RUNASADMIN
. При запуске exe, вам будет предложено для доступа администратора.
С этим вы можете просто создать обычный ярлык для исполняемого файла, как вы сделали бы это с помощью Inno-Setup.
если вы хотите сделать это с помощью cmd или пакетного файла, вы можете использовать следующую команду:
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "<Path to your exe>" /t REG_SZ /d RUNASADMIN
"Запуск от имени администратора" является свойством исполняемого файла, а не ярлыка. Вы должны добавить требуются манифеста это делает Windows запрашивать высоту.
чтобы сделать это в Windows XP, вам нужно будет использовать runas
глагол с ShellExecute()
запустить от имени другого пользователя, но это позволит исключить любую возможность доступа к локальному профилю. Это можно сделать из вашего exe, когда он обнаруживает, что он не работает с полным доступом администратора.
после создания ярлыка измените его 21-й байт (позиция 0x15) на 32 (0x20), чтобы он "запускался как администратор". Изменение его обратно на 0 делает его" нормальным " (не-администратором) ярлыком.