将清单嵌入到exe文件中

3
我有一个与 .exe 程序文件链接的 .manifest 文件,以便在打开时请求管理员权限。现在它是一个单独的文件,名为 program_name.exe.manifest,位于与 program_name.exe 相同的文件夹中。是否有办法将清单文件嵌入到 .exe 文件中,以便它可以成为一个单一的文件而不是两个文件。
顺便说一下,该程序使用 C++ 创建。
2个回答

2

是的。将清单声明为资源,然后只需构建资源对象文件并将其链接到您的exe即可。

在您的resource.rc文件中,像这样定义您的清单资源:

IDR_RT_MANIFEST1        RT_MANIFEST            "program_name.exe.manifest"

在你的resource.h文件中,将其声明为值1。
#define IDR_RT_MANIFEST1    1

使用windres构建资源文件:windres resource.rc -o resource.o 在构建项目时链接资源:-l resource.o .........................................................................
如果您使用Visual Studio,则不需要显式构建它,但是有2个选项应该事先设置:
1)项目 > 项目名称属性 > 配置属性 > 链接器 > 清单文件 -> 生成清单 设置为No 2)项目 > 项目名称属性 > 配置属性 > 清单工具 > 嵌入清单 设置为Yes 还要将您的清单文件作为现有项目添加到您的项目中。

0
如果您正在使用Windows CL,例如PowerShell,请尝试以下命令: program_name.exe –manifest program_name.exe.manifest -outputresource:program_name.exe;1 这应该可以解决问题。

C:\WINDOWS\system32>main.exe -manifest main.exe.manifest -outputsource:main.exe;1 'main.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。 - user5063431
1
你可以尝试从包含.exe文件的文件夹中运行命令,或者按照这个线程更改环境变量,使程序可以从任何文件夹中运行 http://stackoverflow.com/a/8939956/8021378 - Coding Cat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接