c#使用mt.exe v1.0.0.0在.exe中嵌入清单文件

时间:2017-09-28 14:29:19

标签: c# visual-studio manifest uac

我有一个在Visual Studio .NET 2003中制作的传统控制台应用程序。 我试图在构建时生成的.exe中没有成功嵌入清单文件因为我想在我的应用程序启动时避免在Windows 7中最终弹出的UAC。

所以我的清单文件名为MyTestApp.exe.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/> 
  <description>SDPUpdater for ServiDirPlus</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

然后在Visual Studio .NET 2003中,在构建后操作中,我编写以下命令:

“C:\ Program Files(x86)\ Microsoft Visual Studio .NET 2003 \ Common7 \ Tools \ Bin \ winnt \ mt.exe”-manifest“$(ProjectDir)$(TargetFileName).manifest”

考虑到:

$(ProjectDir) : C:\MyProjects\ConsoleApps\MyTestApp\
$(TargetFileName) : MyTestApp.exe

我的清单文件MyTestApp.exe.manifest位于C:\ MyProjects \ ConsoleApps \ MyTestApp \

但是出现以下错误:

Performing Post-Build Event...
Microsoft (R) Side-By-Side Manifest Tool 1.0.0.0
Copyright (C) Microsoft Corporation 2000-2001.  All Rights Reserved.

Nothing to do!
Modes of operation:
   -hashupdate         Update hashes of member files
   -makecdfs           Generate CDF files to make catalogs
   -verbose            Disply piles of debugging information

Modifiers:
   -manifest <foo.man> The name of the manifest to work with

Normal usage:   mt.exe -hashupdate -makecdfs -manifest foo.man

Project error: A tool returned an error code from the build event

Post-Build Event failed

我想我必须向mt.exe表明我的清单文件必须嵌入MyTestApp.exe但我不知道如何因为mt.exe v1.0.0.0只有1个修饰符(清单),它不会提供任何方式来指示我的MyTestApp.exe文件。

1 个答案:

答案 0 :(得分:0)

我使用过mt.exe(Microsoft(R)Manifest Tool版本5.2.3790.2075)并在构建后使用此行:

“C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ mt.exe”-manifest“$(ProjectDir)$(TargetFileName).manifest”-outputresource:$(TargetFileName);#1 < / p>

现在编译好了。

现在,我有另一个问题:

启动控制台应用后,uac弹出通知会继续显示。

我的控制台应用程序正在转到我的C:\ Program Files \中的文件夹。

但最好再开一个关于它的帖子。这已经解决了。