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

3

以下是获取Windows操作系统名称和版本的方面比较:

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

systeminfo命令还是wmic命令?我想避免在C语言中使用OSVersionInfoEx,因为需要硬编码市场名称检测,如果引入新的Windows版本,则会增加维护工作量。请分享您的意见。

1个回答

5

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接