【发布时间】:2010-01-04 14:16:52
【问题描述】:
我最近看到this Stackoverflow 关于检测“真实”版本的 Windows 的问题。
我有一个应用程序使用的代码仅适用于 Windows Vista 及更高版本。为了保持与 Windows XP 的兼容性,我创建了自己的版本,它与 Vista 代码完全相同,但远没有 Vista 代码那么快。当前,当从 GetVersionEx() 检测到 XP 时会加载 XP 代码。但是,很明显,当应用程序在 XP 兼容性下运行时,会不必要地加载此代码。现在我知道我可以检查 Vista 方法,但是我的代码使用了很多仅限 Vista 的代码,我宁愿不必检查该方法是否存在,因为我已经编写了 XP 检查,并且更改会更容易唯一的功能。
现在我的问题是:如何运行此 WMI 查询并将结果(Windows 版本)作为 int AND std::string: "Select Version from Win32_OperatingSystem"
我正在使用 VC++ 2008。
【问题讨论】:
-
为什么你要告诉你程序的其他部分,当操作系统在 XP 兼容性下运行时,它是支持 Vista 的?操作系统尽可能模拟 XP,根据您指定的版本更改其行为,不仅适用于您的代码,还适用于您使用的所有基本服务,如 Windows Shell、通用控件、基本服务(如文件 IO)、安全性, 内存管理, DLL 加载, 以及任何在 Windows XP 中引入的黑客, 使那些古老的冲出游戏继续工作)。在 XP 兼容模式下使用 Vista API 是自找麻烦。
-
我同意这是一个坏主意,但当时我对最佳实践和一般编程的了解……有点低。我的一些其他问题让我畏缩并质疑我到底在想什么。好消息是我的大部分程序都没有离开我的电脑 :)
标签: visual-c++ wmi