C++ 如何在C+;中为我的程序禁用程序兼容性助手+/Win32?

C++ 如何在C+;中为我的程序禁用程序兼容性助手+/Win32?,c++,winapi,compatibility,C++,Winapi,Compatibility,当我的应用程序退出时,Windows“程序兼容性助手”出现。我不希望在应用程序终止时出现该窗口 这就是我的问题的解决办法 我添加了自定义清单。如果您看到此对话框,可能会发生以下两种情况之一: 检测到您的程序是安装程序,Windows将为您提升安装程序。对此您无能为力,因为此提升检查是由文件名试探性地确定的。如果您的程序文件名中包含“setup”、“instal”(是的,一个l)或其他一些内容,则会出现对话框,您对此无能为力。 编辑:显然有办法解决这个问题。。。见评论 或者,您可能正在调用当前版

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


这就是我的问题的解决办法
我添加了自定义清单。

如果您看到此对话框,可能会发生以下两种情况之一:

  • 检测到您的程序是安装程序,Windows将为您提升安装程序。对此您无能为力,因为此提升检查是由文件名试探性地确定的。如果您的程序文件名中包含“setup”、“instal”(是的,一个l)或其他一些内容,则会出现对话框,您对此无能为力。
    编辑:显然有办法解决这个问题。。。见评论

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


  • 无法仅“禁用”此对话框--您必须首先修复触发此对话框的原因,使其消失。

    如何退出程序?Windows使用试探法来确定为旧版本Windows编写的应用程序是否尝试执行不再受支持的操作。这在安装程序中尤其常见。如果不了解更多有关程序的信息,就很难进行调试;如果是#1,那么如果清单中有requestedExecutionLevel标记,就可以了。只有在没有清单或清单没有指定requestedExecutionLevel时,才会应用启发式方法。@Adrian:您愿意将执行步骤放入答案中吗?关于如何将requestedExecutionLevel添加到应用程序清单的说明:@Adrian:我要求您将其放入答案中的主要原因是为了我可以投票吗:)