我有一个老式的Windows GDI应用程序,用C编写,正在用Mingw工具链编译。
我的一些用户一直在抱怨Windows Vista和Windows 7的虚拟商店,其中写入应用程序不应访问的目录的文件被虹吸掉并存储在别处。 他们说这让他们感到困惑,而他们宁愿有一个错误。 根据微软的文档,防止这种情况发生的方法是添加一个应用程序清单。
不幸的是,这似乎没有做任何事情。
我的清单是:
<?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编译的,并以通常的方式链接到我的应用程序。 图标显示出来,所以我相信至less这一点是正确的。
还有什么我需要做的,让清单得到尊重?
解决:我从资源文件中缺少这一行:
#include "winuser.h"
没有它,你没有得到任何诊断或指示,它没有工作; 你只是没有得到一个清单。 叹。
我在这里使用了清单提取工具: http : //weblogs.asp.net/kennykerr/archive/2007/07/10/manifest-view-1-0.aspx