Как создать ярлык для запуска приложения с правами администратора из cmd-линии?

У меня есть программа установки (Inno-Setup), которая устанавливает мое приложение в путь, определенный пользователем. В конце процедуры установки я хочу создать ярлык, который запускает приложение с правами администратора. Решение должно работать на всех версиях win от WinXP до Win7.

Что я могу сделать для этого?

Я знаю, что это возможно с пакетом script, который выполняет неприятный vb- script. Недостатком является то, что всплывающее окно cmd-window и оно работает только на win7.

Я также попробовал команду mklink создать гиперссылку, но она не работает, потому что невозможно передать аргумент, который устанавливает admin priviliges.

Ответ 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, когда он считает, что он не работает с полным доступом администратора.