【问题标题】:How do I deploy applications in run as administrator mode?如何在以管理员身份运行模式下部署应用程序?
【发布时间】:2010-03-12 11:24:26
【问题描述】:

如何部署应用程序以使它们需要管理员权限,而无需最终用户手动执行?

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

【问题讨论】:

  • 你用什么来部署你的程序? (这非常重要,因为您可能需要安装程序来生成设置了“以管理员身份运行”标志的快捷方式。)

标签: windows delphi deployment uac


【解决方案1】:

您可以使用应用程序清单中的 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 上以标准用户身份运行,您的应用程序将不会以管理员身份启动;如果这对您的应用程序来说是个问题,您可能需要编写代码来检测它。

【讨论】:

  • 我在 delphi xe2 上使用新的 VCL Forms 应用程序尝试了您的解决方案,创建了一个 txt 文件,其中包含您从 放置的内容,嵌入在资源中,强制 ID = 1 和 RT_MANIFEST 广告类型,我编译但是当我运行它时没有任何反应,我应该期望 Windows 强制我以管理员身份运行吗?
  • @user193655:你是否关闭了 UAC?如果是这样,那么 Windows 将不会提示您提升。否则,您描述的步骤听起来是正确的。您最好将完整的详细信息作为一个新问题发布;其他 Delphi 用户可能会为您解答一些微妙的特定于 Delphi 的问题(我不知道)。
  • @BradleyGrainger:我们从哪里开始 UAC ?
【解决方案2】:

另一种选择,虽然不推荐用于“日常应用程序”,但使用“安装”或“设置”作为名称的一部分来命名您的可执行文件。请记住,如果您不更改任何注册表设置或创建任何新文件,则 Windows 将向用户显示程序可能无法正常运行的警告。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 2010-12-19
    • 1970-01-01
    • 2011-12-29
    • 2017-09-20
    • 2013-05-31
    • 2012-08-08
    相关资源
    最近更新 更多