Member 8032827 Ответов: 1

Как запустить приложение с правами администратора с помощью файла манифеста в Visual Studio 2005?


Мне нужно создать приложение, которое должно создавать файлы/папки в "C:\Program файлы"," Пользователи[Имя пользователя] " и Sys32. Кроме того, приложение должно сделать некоторую запись в реестре.

Это приложение должно работать на Vista и выше. Кроме того, на Windows Server 2003 и выше.

Вышеуказанные операционные системы имеют концепцию контроля учетных записей пользователей (UAC), где для доступа к программным файлам и записи в реестр требуются права администратора.

Я заглянул на многие форумы и обнаружил, что с помощью Microsoft SDK мы можем проверить, есть ли у текущего пользователя права администратора или нет . Но функция "CheckTokenMembership" не работает для Vista и более высоких версий ОС.

Я также нашел решение, в котором файл манифеста можно использовать для того, чтобы заранее сообщить ОС, что текущее приложение требует прав администратора. Это делается с помощью тега "requestedExecutionLevel".

Я использую Visual Studio 2005 для создания приложения. Когда мы создаем приложение в Visual Studio, создается файл манифеста по умолчанию. Могу ли я изменить этот файл манифеста, включив в него тег "requestedExecutionLevel", чтобы мое приложение всегда работало с правами администратора?

Есть ли какой-либо другой метод, с помощью которого мое приложение работает с правами администратора, не спрашивая пользователя (администратора или стандартного) запустить мое приложение как "запуск от имени администратора"??

Спасибо!

1 Ответов

Рейтинг:
0

Richard MacCutchan

Перейдите на страницу Propertis вашего проекта в Visual Studio и нажмите кнопку Linker -> Manifest File в виде дерева. Затем в правой панели выберите требуемую привилегию в UAC Execution Level селектор. Во всех случаях это поднимет командной строке в Windows, если контроль учетных записей отключен.


Member 8032827

Я использую Visual Studio 2005, и у него нет опции "уровень выполнения UAC".
Могу ли я изменить файл манифеста по умолчанию?

Richard MacCutchan

Я думаю, что да, но прошло уже некоторое время с тех пор, как я это делал (или использовал VS 2005). Вам нужно иметь запись типа: <requestedexecutionlevel level="requireAdministrator" uiaccess="false"> Вы уверены, что в свойствах нет ничего, что позволило бы вам его изменить?

Member 8032827

Привет, спасибо за ответ.
Я проверил это на форумах, а также нет опции свойств в VS 2005 для этого.

Richard MacCutchan

Ты видел? эта статья MSDN?