【发布时间】:2011-05-23 01:39:35
【问题描述】:
在windows中获取操作系统名称、操作系统版本在以下几个方面哪个更好 -
- 获取信息的时间
- 兼容所有 Windows 操作系统,如 xp、vista 及更高版本
systeminfo 还是 wmic 命令?我想避免在 C 中使用 OSVersionInfoEx,因为必须对营销名称检测进行硬编码,并且如果引入了新的 Windows 风格,将增加维护工作。请分享您的意见。
【问题讨论】:
在windows中获取操作系统名称、操作系统版本在以下几个方面哪个更好 -
systeminfo 还是 wmic 命令?我想避免在 C 中使用 OSVersionInfoEx,因为必须对营销名称检测进行硬编码,并且如果引入了新的 Windows 风格,将增加维护工作。请分享您的意见。
【问题讨论】:
GetVersionEx - 没有比这更快的速度来获取基本的操作系统版本号了。但是您是对的,您将无法将较新版本的操作系统映射到正确的字符串。您是否考虑过这样做:
OSVERSIONINFOEX version = {};
char szOS[MAX_OS_LENGTH];
version.dwOSVersionInfoSize = sizeof(version);
GetVersionEx((OSVERSIONINFO*)&version);
if (MyFunctionToMapVersionToString(&version, szOS) == false)
{
sprintf(szOS, "Microsoft Windows %d.%d", version.dwMajorVersion, version.dwMinorVersion);
}
WMI - 需要编写更多代码。但是您可能只在应用程序启动时(或需要时)执行此操作,并在再次需要信息时缓存结果。操作系统产品名称不会在应用程序查询一次后更改。 :) 至于向后兼容性,我确信它在旧操作系统上运行良好……但您要在将其交付给客户之前对其进行测试,对吧?
如果您想要一种未记录的方式,则有一个注册表项,其中包含您想要的内容:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion ("ProductName")
【讨论】: