Мне нужно создать приложение, которое должно создавать файлы / папки в «C: \ Program Files», «Users [username]» и Sys32. Также приложение должно внести некоторую запись в реестр.
Это приложение должно работать на Vista и выше. Также на Windows Server 2003 и выше.
Указанные выше операционные системы имеют концепцию контроля учетных записей пользователей (UAC), где для доступа к программным файлам и записи в реестре требуются права администратора.
Я просмотрел множество форумов и обнаружил, что с помощью Microsoft SDK мы можем проверить, есть ли у текущего пользователя права администратора или нет. Но функция «CheckTokenMembership» не работает для Vista и более поздних версий ОС.
Я также нашел решение, в котором можно использовать файл манифеста, чтобы заранее сообщить ОС, что текущее приложение требует прав администратора. Это делается с помощью тэга «requiredExecutionLevel».
Я использую Visual Studio 2005 для создания приложения. Когда мы создаем приложение в Visual Studio, создается файл манифеста по умолчанию. Могу ли я изменить этот файл манифеста, включив в него тег «требуемыйExecutionLevel», чтобы мое приложение всегда выполнялось с правами администратора?
Есть ли какой-либо другой способ, с помощью которого мое приложение запускается с правами администратора, не запрашивая пользователя (администратора или стандартного) для запуска моего приложения как «запуск от имени администратора» ??
Спасибо!
Вы должны найти опцию для этого в свойствах проекта Linker -> Manifest File -> UAC Execution Level. Установите это в requireAdminstrator
,
Это заставит сгенерированный по умолчанию манифест включать requestedExecutionlevel
что вам нужно, так что вашим пользователям будет автоматически предложено повысить свои привилегии, если они еще не повышены.
Других решений пока нет …