Windows 8.1 及更高版本 (fasm) 的 GetVersionEx 函数

GetVersionEx function for Windows 8.1 and upper (fasm)

我正在用 fasm 编写应用程序,但在确定 Windows 8.1 及更高版本时遇到问题。函数 GetVersionExVersion Helper 给我 Windows 8. 正如 MSDN 所说,我必须通过更改 Visual Studio 中的清单文件来定位我的应用程序,但我没有使用 VS,所以我该怎么办?

清单文件是作为 Win32 资源嵌入的 XML 文件。它也可以是名称为 your.exe.manifest 的外部文件。在 Internet 中搜索示例以获取示例内容。

任何允许您 link 将资源放入已编译可执行文件的编程环境都可用于创建清单资源。您所要做的就是为您的应用程序编写一个合适的 .manifest 文件,其中包含所需的 XML 值,然后将该文件的内容直接 link 到您的应用程序资源中,确保资源类型为 24,资源 ID 为 1、2 或 3(有关何时使用哪个 ID 的详细信息,请参阅 this page)。您不需要为此使用 VisualStudio。

如果出于某种原因,您无法 link 将清单直接放入您应用的资源中,您也可以将 XML 保存到名为 <myappname>.exe.manifest 的文件中(其中 <myappname> 是您的 EXE 文件的实际名称)并将其放在与您的应用程序相同的文件夹中。这不是表现形式的首选方法,但它确实有效。

话虽这么说,但您可以使用其他 API 代替 GetVersion/Ex() 或基于 VerifyVersionInfo() 的助手来获得正确的 OS 版本,而无需处理任何表现形式。也就是说,可以使用 RtlGetVersion(), NetServerGetInfo(), and NetWkstaGetInfo()(并且所有这些都已经过测试,可以在 Windows 8.1 和 10 中工作)。