windows - 如何为 Windows 安装程序创建 list ?

标签 windows installation uac manifest elevation

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

坦率地说,更改安装程序名称以使事情正确提升听起来很困惑。 This article谈论了很多关于 UAC 和提升的内容,它说您可以使用 list 来制作需要授权的东西。

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

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

谢谢!

最佳答案

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

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

此外,如果安装经过数字签名,则必须在插入 list 资源后完成。


此外,mt.exe包含在 Platform SDK 中,大多数版本的 visual studio 都有嵌入、提取和合并 list 资源的选项。

关于windows - 如何为 Windows 安装程序创建 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408202/

相关文章:

cin 和 CTRL + Z 的 C++ 问题

.net - 如何在Vista(.NET)中不提升运行

winapi - 从进程中删除管理员权限

c# - 无法在 Windows 7 上读取 64 位注册表项

installation - 执行第 3 方安装程序时,Inno Setup 中的 ShellExec 或 Exec 函数可以使用哪些参数?

installation - WiX:如何在外部设置属性?

c# - COM 是如何工作的?

c++ - 解析位图文件时,如何替换WORD和DWORD数据类型?

windows - "Calculator bug"是代码问题吗?

c# - 升级应用程序时安装到同一路径