Как развернуть приложения в режиме администратора? - PullRequest
8 голосов
/ 12 марта 2010

Как мне развернуть приложения, чтобы они требовали прав администратора, а конечный пользователь не сделал это вручную?

Я использую Delphi 2009 для сборки приложения.

Ответы [ 2 ]

11 голосов
/ 12 марта 2010

Вы можете сообщить 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, ваше приложение не будет запущено от имени администратора; вам может потребоваться написать код, чтобы обнаружить это, если это будет проблемой для вашего приложения.

2 голосов
/ 12 марта 2010

Другой вариант, хотя он и не рекомендуется для «повседневных приложений», заключается в присвоении имени исполняемому файлу имени «Install» или «Setup». Имейте в виду, что если вы не измените какие-либо параметры реестра или не создадите какие-либо новые файлы, Windows отобразит предупреждение для пользователя о том, что программа может не работать должным образом.

...