Как я развертываю приложения так, чтобы они потребовали прав администратора без конечного пользователя, делающего это вручную?
Я использую Delphi 2009 для создавания приложения.
Вы можете сообщить Windows, что ваше приложение должно запускаться от имени администратора, используя элемент requestedExecutionLevel
в манифесте приложения.
Файл манифеста - это файл XML, который выглядит следующим образом. Он должен называться YourApp.exe.manifest и находиться в той же папке, что и исполняемый файл. (Он также может быть встроен в ресурсы вашего приложения; он должен иметь тип ресурса RT_MANIFEST
и идентификатор 1.)
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="YourApp" type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Для получения дополнительных сведений о манифестах приложений и о том, как их создавать, см. Создайте и встроите манифест приложения (UAC) в MSDN.
Обратите внимание, что манифест соблюдается только в Windows Vista и более поздних версиях. Если ваш пользователь работает как стандартный пользователь в Windows XP, ваше приложение не будет запущено от имени администратора; вам может потребоваться написать код для обнаружения этого, если это будет проблемой для вашего приложения.
Другой вариант, хотя и не рекомендуемый для «повседневных приложений», - присвоить исполняемому файлу имя «Install» или «Setup» в качестве части имени. Имейте в виду, что если вы не измените какие-либо параметры реестра или не создадите какие-либо новые файлы, Windows отобразит предупреждение для пользователя о том, что программа могла работать некорректно.