如何在C++/Win32中禁用程序兼容性助手

How can I disable the Program Compatibility Assistant for my program in C++/Win32?

本文关键字:程序 兼容性 C++ Win32      更新时间:2023-10-16

当我的应用程序退出时,会出现Windows"程序兼容性助手"。我不希望在我的应用程序终止时出现该窗口。


这是我的问题的解决方案http://msdn.microsoft.com/en-us/library/dd371711(v=vs.85).aspx我添加了自定义清单。

如果您看到这个对话框,可能会发生以下两件事之一:

  1. 您的程序被检测为安装程序,Windows将为您提升安装程序。对此,您几乎无能为力,因为此提升检查是由文件名启发式确定的。如果您的程序的文件名中包含"setup"、"instal"(是的,只有一个l)或其他一些内容,则会出现对话框,您对此无能为力。
    编辑:显然可能有办法解决这个问题。。。请参阅评论。

  2. 或者,您可能调用某些当前版本的Windows不推荐使用的API,或者错误地调用某些API,从而触发兼容性试探。如果是这种情况,您只需要在程序中找到触发启发式的位置。您可以使用应用程序兼容性工具包(ACT)来确定是什么触发了对话框IIRC。

没有办法仅仅"禁用"这个对话框——你必须首先修复触发它的原因,才能使它消失。