Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows兼容性需要注意哪些参数?_Windows_Compatibility - Fatal编程技术网

Windows兼容性需要注意哪些参数?

Windows兼容性需要注意哪些参数?,windows,compatibility,Windows,Compatibility,我想知道在运行exe或安装程序时,哪些参数或API可能会引起Windows兼容性注意?每当我运行exe时,它都会调用Windows兼容性管理器。是因为错误使用了WinAPI吗?或者是否有其他参数会引起Windows注意以检查任何exe的兼容性?Windows在运行应用程序时显示的“兼容性选项”与GetVersionEx无关我认为当清单丢失和/或指示与您的计算机安装的Windows系统不同时,会弹出此对话框 如果应用程序的用户看到兼容性弹出窗口,请确保清单正确。本文可能是一个良好的开端: 我想

我想知道在运行exe或安装程序时,哪些参数或API可能会引起Windows兼容性注意?每当我运行exe时,它都会调用Windows兼容性管理器。是因为错误使用了WinAPI吗?或者是否有其他参数会引起Windows注意以检查任何exe的兼容性?

Windows在运行应用程序时显示的“兼容性选项”与
GetVersionEx
无关我认为当清单丢失和/或指示与您的计算机安装的Windows系统不同时,会弹出此对话框

如果应用程序的用户看到兼容性弹出窗口,请确保清单正确。本文可能是一个良好的开端:




我想,这就是嵌入在.exe或.dll(当然还有它的内容)中的清单的全部内容。嘿@quetzalcatl我在谷歌搜索时发现了这个链接。程序通常使用GetVersion函数或GetVersionEx API来获取它们运行的Windows OS版本的信息。在WindowsVista和WindowsServer2008下,这些API将返回6作为主要版本。如果程序被硬编码以查找XP版本(主要版本5),则在Windows Vista和Windows Server 2008下会失败。我读了这个链接后感到困惑。几年前,XP曾是一种新的操作系统,引入了一些新的机制和新的API。此时,“非常旧”的windows的主要版本号为4或更少,“新”的windows(即XP类)的主要版本号为5。开发人员过去常常手动检查
GetVersion
来检查应用程序是在“旧”系统上运行还是在“新”系统上运行,只是为了不在“旧”系统上使用新的API。一些开发人员倾向于忽略版本号的变化。如果版本==5,他们将检查写为
if version==5
,而不是
if version>=5
。因此,MSDN上的注释提醒我们,在比XP更新的操作系统上,每一个写为
if version==5
的版本检查都会失败。例如,Vista的主修科目为6。因此,如果version==5,则在Vista上检查
将失败,忽略6比5新,从而忽略WinXP中引入的这些新API集在Vista中存在的事实。如果你在Vista上运行这样的程序,这个程序会认为它正在运行,也就是说,在Win98上运行。感谢Quetzalcatl,我的程序中也有一个windows版本的检查。我正在通过OSVERSIONINFO结构使用GetVersionEx()获取版本,并检查windows 7的版本OSVERSIONINFO.dwMajorVersion>=6。这可能是windows注意的问题吗?请检查windows的exe兼容性问题?