4

我们的应用程序有一个安装程序,必须下载并以管理员权限运行,就像许多其他安装程序一样。但是,安装程序未命名为“setup.exe”,因此 Windows 不会自动将其检测为需要提升才能运行。

坦率地说,更改安装程序名称以使事情正确提升听起来很混乱。这篇文章谈了很多关于 UAC 和提升的内容,它说您可以使用清单来使某些东西需要授权。

所以,我们只想为我们的安装程序创建一个清单。但是,我们如何确保清单存在?如果用户只是下载 our_application_v13.exe,我们如何确保他们也获得清单?AFAIK 在这种情况下,清单必须是一个名为“our_application_v13.exe.manifest”的文件。

由于他们只是从我们的网站下载文件,我们如何确保他们也获得清单?我们能否以某种方式将其构建到可执行文件中,或者以其他方式将可执行文件标记为需要提升?我们使用的是数百年前的安装工具,我们无法更改,因此它没有任何与此相关的功能。

谢谢!

4

3 回答 3

3

如果安装工具允许您更改/附加/编辑生成的 EXE 文件的资源,您可以将清单文件添加为资源类型为 24(Windows 标头中的 RT_MANIFEST)和资源 ID 为 1 的资源。

如果安装程序工具没有内置工具来插入资源,那么您可能需要编写一个工具来对 install.exe 文件进行后处理以插入资源。查找 Windows API BeginUpdateResouce和 EndUpdateResource。它们有一些限制——如果 EXE 根本不包含任何资源文件,它们往往无法工作,但大多数安装工具生成的 exe 文件至少包含版本信息资源。

此外,如果安装是数字签名的,则必须在插入清单资源后完成。


此外,平台 SDK 和大多数版本的 Visual Studio 中包含的mt.exe具有嵌入、提取和合并清单资源的选项。

于 2009-09-11T07:58:39.267 回答
1

清单也可以在应用程序的本机资源部分(在 EXE 内)。

于 2009-09-10T23:16:21.040 回答
1

Heaventools Software有Resource Tuner Console

Resource Tuner Console 是一个命令行工具,使开发人员能够自动对安装 exe 文件进行后处理并插入清单资源。具体参见添加应用程序清单页面以获取更多详细信息:

于 2010-10-21T18:51:06.717 回答