在mingw app中忽略了清单

Dav*_*ven 5 windows uac manifest

我有一个用C语言编写的老式Windows GDI应用程序,它正在使用Mingw工具链进行编译.

我的一些用户一直在抱怨Windows Vista和Windows 7的虚拟商店,其中写入应用程序无法访问的目录的文件被虹吸掉并存储在其他地方.他们说这让他们感到困惑,他们更倾向于犯错误.根据Microsoft的文档,防止这种情况发生的方法是添加应用程序清单.

不幸的是,这似乎没有做任何事情.

我的清单是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <description>WordGrinder</description>
  <assemblyIdentity version="1.0.0.0" name="WordGrinder"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)

...以及引用它的资源文件是:

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "src/c/arch/win32/manifest.xml"
101 ICON DISCARDABLE "src/c/arch/win32/icon.ico"
Run Code Online (Sandbox Code Playgroud)

(并不复杂,正如您所看到的.)资源文件使用windres编译并以通常的方式链接到我的应用程序.图标显示出来,所以我相信这一点至少是正确的.

还有什么我需要做的才能让清单得到尊重吗?

Dav*_*ven 7

解决:我从资源文件中遗漏了这一行:

#include "winuser.h"
Run Code Online (Sandbox Code Playgroud)

没有它,你没有得到它没有工作的任何诊断或指示; 你只是没有得到一个清单.叹.

我在这里使用清单提取工具来解决这个问题:http://weblogs.asp.net/kennykerr/archive/2007/07/10/manifest-view-1-0.aspx