如何使用mt.exe将清单添加到可执行文件?

我正在尝试使用Windows SDK中的mt.exe来使用以下命令行将清单添加到没有的可执行文件中:

C:\winsdk61>mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -updateresource:"r:\shared\hl33m.exe;#1" 

不幸的是,当我这样做,我得到这个错误:

 mt.exe : general error c101008c: Failed to read the manifest from the resource of file "r:\shared\hl33m.exe". The specified resource type cannot be found in the image file. 

当然,在文件中找不到资源 – 文件没有清单,这就是为什么我要添加一个。

我怎样才能将一个清单附加到一个可执行文件? 难道这不简单吗?

您应该使用/ outputresource而不是/ updateresource :。

正确的命令行是:

 mt.exe -nologo -manifest "r:\shared\hl.exe.manifest" -outputresource:"r:\shared\hl33m.exe;#1" 

这对我2005年的工作:

  1. 使用扩展名清单创建以可执行文件命名的文本文件,并确保它与代码文件位于相同的路径中; 即Form1.cs等。例如,如果您的应用程序名称是UACTester.exe,那么您的清单文件应该命名为UACTester.exe.manifest。
  2. 确保清单的内容是好的。 我使用这个:
  <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> <applicationRequestMinimum> <defaultAssemblyRequest permissionSetReference="Custom" /> <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" /> </applicationRequestMinimum> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> </application> </compatibility> </asmv1:assembly> 
  1. 在您的可执行项目上,添加以下生成后事件:

    "$(DevEnvDir)..\Tools\Bin\mt.exe" -nologo -manifest "$(TargetPath).manifest" -outputresource:"$(TargetPath)"

希望这可以帮助。 祝你好运! -Matt Esterak

您也可以像这样使用它来将清单嵌入到EXE文件中:

mt.exe -nologo -manifest“r:\ shared \ hl.exe.manifest”-outputresource:“r:\ shared \ hl33m.exe; 1”