如何在Windows中获取操作系统名称,版本?

哪一个更好的方面来获得操作系统的名称,在Windows操作系统版本 –

  1. 时间在获取信息
  2. 在所有的Windows操作系统,如XP,Vista和更高的兼容性

systeminfo或wmic命令? 我想避免在C中使用OSVersionInfoEx,因为必须对营销名称检测进行硬编码,并且如果引入了新的窗口风格,将会添加到维护工作中。 请分享您的意见。

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")