我開發了一個可能使用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>
解決Windows 7的
但由於某些原因,它仍然發生在Vista 32 ...
我也試過編輯這會導致問題的特定DLL的清單,但它沒有任何效果。只有可執行文件的清單本身才會影響問題。
那麼...... Vista 32?
感謝您的快速回復。我跟隨你的領導,但問題沒有完全解決。見上面編輯的問題。 – Asaf 2009-10-19 16:31:57