當我的應用程序退出時,Windows出現「程序兼容性助手」。我想在應用程序終止時不會出現該窗口。如何在C++/Win32中禁用我的程序的程序兼容性助手?
這是我的問題的解決方案http://msdn.microsoft.com/en-us/library/dd371711(v=vs.85).aspx 我添加的自定義清單。
當我的應用程序退出時,Windows出現「程序兼容性助手」。我想在應用程序終止時不會出現該窗口。如何在C++/Win32中禁用我的程序的程序兼容性助手?
這是我的問題的解決方案http://msdn.microsoft.com/en-us/library/dd371711(v=vs.85).aspx 我添加的自定義清單。
如果你看到這個對話框中,兩件事情之一,可以發生:
你的程序被檢測爲一個安裝程序,並且Windows提供提升安裝程序爲您服務。關於這一點你可以做的很少,因爲這個高程檢查是由文件名啓發式確定的。如果你的程序包含「setup」,「instal」(是的,一個l)或其他文件名,那麼對話框將會出現,並且你無能爲力。
編輯:顯然可能有解決方法......看評論。
或者,您可能正在調用一些不贊成用於當前版本的Windows的API,或者錯誤地調用某些API,從而觸發兼容性試探法。如果是這樣的話,你只需要在程序中找到觸發啓發式的地方。您可以使用Application Compatibility Toolkit (ACT)來確定觸發對話IIRC的是什麼。
沒有辦法只是「禁用」這個對話框 - 你必須首先解決觸發它的原因,讓它消失。
如果它是#1,那麼如果您的清單中有一個requestedExecutionLevel標記,則可以。啓發式僅適用於沒有清單或者清單未指定requestedExecutionLevel的情況。 – 2011-06-14 20:41:01
@阿德里安:你會不會考慮把這些做成一個答案? – 2011-06-14 20:49:55
有關如何將requestedExecutionLevel添加到應用程序清單的說明:http://msdn.microsoft.com/en-us/library/bb756929.aspx – 2011-06-16 23:50:32
你是如何退出程序的? – 2011-06-14 15:51:53
Windows使用啓發式技術來確定爲較早版本的Windows編寫的應用程序是否可能試圖執行不再支持的操作。這對於安裝者來說尤其常見。如果不知道更多關於程序的信息,很難進行調試。 – 2011-06-14 16:03:44
我完成與返回0的應用程序; – Kar 2011-06-14 16:16:00