在mingw app中忽略了清单

时间:2013-11-28 00:17:23

标签: windows manifest uac

我有一个用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>

...并且引用它的资源文件是:

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "src/c/arch/win32/manifest.xml"
101 ICON DISCARDABLE "src/c/arch/win32/icon.ico"

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

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

1 个答案:

答案 0 :(得分:6)

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

#include "winuser.h"

没有它,你就不会得到任何不起作用的诊断或迹象;你只是没有得到清单。叹息。

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