【问题标题】:Manual manifest files手动清单文件
【发布时间】:2014-09-04 00:20:04
【问题描述】:

我有一个第 3 方可执行文件,我试图将它包含在 InstallShield MSI 包中,并且我希望它能够在所有类型的 Windows 中设置权限,尤其是 7 和 Vista 以管理员身份运行。

我对 Manifest 文件的创建或正确配置语法不太了解,但我尝试手动将其设置为 [appname].exe.manifest,并尝试了 XML 中的 <requestedExecutionLevel level=”asInvoker” uiAccess=”false” />,并且它没有以管理员身份运行,我想确认这是因为程序没有以这种方式编译以查看清单文件在同一目录中,还是只是清单文件的情况语法不正确。

如果还有其他简单的想法,我很想听听!

干杯。

【问题讨论】:

标签: manifest installshield


【解决方案1】:

清单可以嵌入到可执行文件中(这是首选)或外部,放置在您描述的文件旁边。如果存在嵌入式清单,则忽略外部清单。对于启动 EXE,这一切都是由 Windows 执行的,不受 exe 文件中的代码的影响。对于加载 DLL,虽然这可能会受到您编写的代码的一定影响,但它不会改变 UAC 行为,因为它不是进程边界。

至于当您将请求asInvoker 的清单放在程序旁边时,程序没有以管理员身份启动是否意味着您创建了一个有效的清单,这取决于清单不存在时会发生什么。由于您提到了 InstallShield,您可以复制模板清单文件,例如其 <InstallShield>\Support\setupexe.invoker.manifest,以确保您的语法正确。

重新阅读您的问题后,我意识到您希望它以管理员身份启动。为此,您需要申请管理权限,因此您应该拥有requireAdministrator 而不是asInvoker,或者以setupexe.admin.manifest 为基础。

【讨论】:

  • 这是非常棒的信息,谢谢迈克尔!我还重新阅读了关于 Manifests 的 MSDN 文章,当它说它“应该”作为资源包含时点击了一些东西,我拼凑了我过去如何使用资源编辑器,然后假设我可以编辑第 3 方可执行文件应用这个 requestedExecutionLevel 修改 - 到目前为止,它看起来解决了问题! :)
猜你喜欢
  • 1970-01-01
  • 2013-07-30
  • 2014-11-09
  • 2021-03-22
  • 2011-04-12
  • 2019-05-08
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多