如何防止程序的“程序兼容性助手”在Vista(和Windows 7)出现?(How do I pre

2019-08-20 07:24发布

我开发一个C ++程序,它可能会使用的Adobe Flash,虽然它不是必需的。
我用CoCreateInstance创建Flash对象,如果失败,我知道未安装Flash,所以我不使用它。
然而,在Vista(我认为Windows 7的为好),未安装闪光灯时,退出该应用程序后,“程序兼容性助手”会弹出一个消息,说“此程序需要丢失的Windows组件”中指定的闪光灯。 OCX。

有没有一种方法,以防止出现此消息? 我不想强迫任何用户安装Flash(尤其是因为它是IE的ActiveX,而Firefox用户可能没有安装它),我的应用程序可以不使用闪光灯运作良好。
加上此消息时,它会在每次运行后,真的很烦。
我的意思并不是当然,用户的计算机上禁用PCA的,但是编程方式禁用在所有机器上这个特定的外观。

有什么想法吗?
谢谢

[编辑:]

我跟着吉文的铅(感谢),并做一些我自己的更多的挖掘。 我添加下面的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?

Answer 1:

从片断这里 (约合设置,但相关谈判,以你的情况)

我如何选择退出程序兼容性助手的我的设置?

为了防止程序兼容性助手出现,则必须包括一个嵌入的清单,用于指定您的安装可执行文件请求的执行级别。 如果您缠绕安装可执行文件在自解压包,您还必须包括在自解压包嵌入清单了。 一旦你这样做,Windows Vista中将把您设置为Windows Vista中感知,它将不再显示PCA对话框时,失败或取消后设置退出。



文章来源: How do I prevent programmatically the “Program Compatibility Assistant” in Vista (and Windows 7) from appearing?