如何以管理员模式运行部署应用程序?

时间:2010-03-12 11:24:27

标签: windows delphi deployment uac

如何在没有最终用户手动执行此操作的情况下部署应用程序以使其需要管理员权限?

我使用Delphi 2009来构建应用程序。

2 个答案:

答案 0 :(得分:11)

您可以使用应用程序清单中的requestedExecutionLevel元素通知Windows您的应用程序需要以管理员身份运行。

清单文件是一个XML文件,如下所示。它应该命名为 YourApp.exe.manifest 并放在与可执行文件相同的文件夹中。 (它也可以嵌入到您的应用程序的资源中;它必须具有RT_MANIFEST的资源类型和ID为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>

有关应用程序清单以及如何创建它们的更多详细信息,请参阅MSDN上的Create and Embed an Application Manifest (UAC)

请注意,清单仅受Windows Vista及更高版本的尊重。如果您的用户在Windows XP上以标准用户身份运行,则您的应用程序将不会以管理员身份启动;如果它对您的应用程序来说是个问题,您可能需要编写代码来检测它。

答案 1 :(得分:2)

另一个选项,虽然不建议用于“每天应用程序”,但是将可执行文件命名为“Install”或“Setup”作为名称的一部分。请记住,如果您不更改任何注册表设置或创建任何新文件,那么Windows将向用户显示该程序可能无法正常运行的警告。