2013-11-28 95 views
4

我有一個老式的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並以通常的方式鏈接到我的應用程序。圖標顯示出來,所以我相信這一點至少是正確的。

我還需要做些什麼才能使清單得到遵守?

回答

6

解決:我是缺少從資源文件中這一行:

#include "winuser.h" 

沒有它,你沒有得到任何診斷或跡象表明,它沒有工作;你只是沒有得到一個清單。嘆。

我想通了這一點這裏使用清單提取工具:http://weblogs.asp.net/kennykerr/archive/2007/07/10/manifest-view-1-0.aspx

+0

這個答案應該得到更多upvotes。我正在關注如何使用Visual Studio嵌入UAC清單的MSDN文檔,並試圖找出如何在我決定嘗試使用Google並登陸此處時如何使其適用於MingW32編譯器。 https://msdn.microsoft.com/en-us/library/bb756929.aspx –