将清单嵌入到 exe 文件

Embedding manifest to exe file

本文关键字:exe 文件 单嵌入      更新时间:2023-10-16

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

顺便说一句,该程序是使用C++创建的

是的。将清单声明为资源,然后仅生成资源对象文件并将其链接到 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( Project > Project_Name Properties > Configuration Properties > Linker > Manifest File -> Generate Manifest设置为No

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

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

如果您使用的是 Windows CL,例如 powershell,请尝试

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

这应该可以解决问题。