GetVersionEx() 已弃用:我应该使用 Environment.OSVersion 吗?

Mar*_*haw 5 .net c# winapi

我打算编写代码来确定操作系统是否为 Windows XP,因此我可以设置 LOCALAPPDATA 环境变量来解决大量使用 ExpandEnvironmentVariables() 的整个代码负载。

为了让它更有趣,一些代码是用 VB6 编写的,一些代码是用 C# 4.0 编写的。查看 GetVersionEx() 的文档,强烈建议从 Windows 8.1 开始弃用此 API 调用。但没问题,我可以使用一组不同的 API 调用(VerifyVersionInfo / VerSetConditionMask)。对于VB6,我别无选择——我必须使用API​​ 调用。

但是,对于我的 C# 代码,似乎没有明显的等效项。有Environment.OSVersion,但这似乎是一组来自不同来源的数据,并且没有任何VerifyVersionInfo() API 的微妙之处。

是否有此 API 调用的包装器?如果没有,我应该自己实施吗?

[已添加] 或者,也许有人可能有一些关于如何实现 Environment.OSVersion 的内部信息?

Dav*_*nan 2

使用 GetVersionEx 就完全没问题了。如果有的话,它在很长一段时间内都不会从 Windows 中删除。微软在保持与旧程序的兼容性方面有着悠久的记录。例如,您仍然可以调用 20 年前已弃用的 Win16 API。