У меня есть программа установки (Inno-Setup), которая устанавливает мое приложение в путь, определенный пользователем. В конце процедуры установки я хочу создать ярлык, который запускает приложение с правами администратора. Решение должно работать на всех версиях win от WinXP до Win7.
Что я могу сделать для этого?
Я знаю, что это возможно с пакетом script, который выполняет неприятный vb- script. Недостатком является то, что всплывающее окно cmd-window и оно работает только на win7.
Я также попробовал команду mklink
создать гиперссылку, но она не работает, потому что невозможно передать аргумент, который устанавливает admin priviliges.
Как создать ярлык для запуска приложения с правами администратора из cmd-линии?
Ответ 1
Вы можете добавить ключ реестра, который сообщает Windows, чтобы выполнить вашу программу как admin:
В 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
Ответ 2
"Запуск от имени администратора" является свойством исполняемого файла, а не ярлыком. Вы должны добавить обязательный манифест, который вызывает приглашение Windows для повышения.
Для этого в Windows XP вам нужно будет использовать глагол runas
с ShellExecute()
для запуска как другой пользователь, но это удалит любую возможность доступа к локальному профилю. Это может быть сделано из вашего exe, когда он считает, что он не работает с полным доступом администратора.