2009-10-19 19 views
6

我開發了一個可能使用Adobe Flash的C++程序,雖然它不是必需的。
我使用CoCreateInstance創建flash對象,如果失敗,我知道flash沒有安裝,所以我不使用它。
但是,在Vista中(我認爲Windows 7也是如此),當未安裝閃存時,在離開應用程序後,「程序兼容性助手」彈出一條消息,指出「此程序需要缺少Windows組件」 flash.ocx。

有沒有辦法阻止此消息出現?我不想強制任何用戶安裝閃存(特別是因爲它是IE ActiveX,並且FireFox用戶可能沒有安裝它),並且我的應用程序可以在沒有閃存的情況下正常運行。
加上這個信息真的很煩人,當它在每次運行後出現。
我並不是說當然禁用用戶機器上的PCA,但是在所有機器上以編程方式禁用這個特定的外觀。如何以編程方式阻止Vista(和Windows 7)中的「程序兼容性助手」出現?

有什麼想法?
感謝

[編輯:]

我跟着吉文的鉛(感謝),並做一些我自己的更多的挖掘。我添加下面的XML應用程序的清單:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"> 
     </requestedExecutionLevel> 
    </requestedPrivileges> 
    </security> 
</trustInfo> 

(參見:msdn.microsoft.com/en-us/library/bb756929.aspx
這個問題解決了在Vista 64

爲了解決在Windows 7同樣的問題,我添加了以下:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
    <!--The ID below indicates application support for Windows Vista --> 
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
    <!--The ID below indicates application support for Windows 7 --> 
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
    </application> 
</compatibility> 

(參見:blogs.msdn.com/yvesdolc/archive/2009/09/22/the-new-compatibility-section-in-the-application-manifest.aspx

解決Windows 7的

但由於某些原因,它仍然發生在Vista 32 ...

我也試過編輯這會導致問題的特定DLL的清單,但它沒有任何效果。只有可執行文件的清單本身才會影響問題。

那麼...... Vista 32?

回答

2

here片段(兼談設置,但有關你的情況下)

我如何選擇退出程序兼容性助手爲我 設置?

爲了防止程序 兼容性助手從 出現,則必須包括 嵌入式清單指定爲您 安裝可執行一個 請求的執行級別。如果將 安裝可執行文件包裝在自解壓縮包 中,則還必須在 自解壓程序包中包含 嵌入式清單。一旦你 做到這一點,Windows Vista會將您的 設置視爲Windows Vista感知,並且 將在安裝程序在失敗或 取消後退出時不再顯示PCA對話框 。

+0

感謝您的快速回復。我跟隨你的領導,但問題沒有完全解決。見上面編輯的問題。 – Asaf 2009-10-19 16:31:57

相關問題