将清单嵌入到exe文件中

时间:2017-05-17 16:46:12

标签: c++ exe manifest

我有一个.manifest文件,该文件与.exe程序文件链接,以便在打开时请求管理员权限。现在它是一个名为program_name.exe.manifest的单独文件,它与program_name.exe是同一个文件夹。有没有什么方法可以将清单文件嵌入到.exe文件中,这样它就可以是一个文件而不是两个文件。

BTW程序是使用C ++创建的

2 个答案:

答案 0 :(得分:0)

如果您正在使用Windows CL,例如powershell,请尝试

program_name.exe –manifest program_name.exe.manifest -outputresource:program_name.exe;1

这应该可以解决问题。

答案 1 :(得分:0)

是。将清单声明为资源,然后构建资源对象文件并将其链接到您的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 ,则不需要明确构建它,但有两个选项需要事先设置:

1)Project > Project_Name Properties > Configuration Properties > Linker > Manifest File -> Generate Manifest设置为No

2)Project > Project_Name Properties > Configuration Properties > Manifest Tool > Embed Manifest设置为Yes

还将清单文件作为现有项目添加到项目中。