代码之家  ›  专栏  ›  技术社区  ›  Yigang Wu

如何检测Win7 Home Premium、Win7 Professional、Win7 Enterprise或Win7 ultimate的操作系统?

  •  3
  • Yigang Wu  · 技术社区  · 15 年前

    如何检测Win7 Home Premium、Win7 Professional、Win7 Enterprise或Win7 ultimate的操作系统?

    9 回复  |  直到 15 年前
        1
  •  3
  •   Shoban    15 年前
        2
  •  1
  •   Yigang Wu    15 年前

    我正在使用HKEY\ U LOCAL\ U MACHINE\Software\Microsoft\Windows NT\CurrentVersion下的“Edition”键来确定Windows版本,我不知道它是否唯一?谢谢。

    EditionID=企业

        3
  •  1
  •   Alex Budovski    15 年前

    他用win32api给这个问题加了个标签。

    GetVersionEx() 等等。就是你需要的。看到这个了吗 code sample 更深入的例子。

        4
  •  1
  •   Andre van Zuydam    14 年前

    在Delphi中,我将在windowsxp和更高版本中使用这个方法,它似乎是最直接的,而且这个注册表项应该一直存在

    var 
      Reg : TRegistry
    begin
      Reg := TRegistry.Create();
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      Reg.OpenKey('Software\Microsoft\Windows NT\CurrentVersion', false);
      Caption := Reg.ReadString('ProductName');
      Reg.Free;
    end
    

        5
  •  0
  •   Piskvor left the building Rohit Kumar    15 年前

    尝试WMI:主机 localhost ,命名空间 root\cimv2 (这些是默认值) SELECT Caption FROM Win32_OperatingSystem

        6
  •  0
  •   Carl Smotricz    15 年前

    我想建议你看看它装的盒子;)

        7
  •  0
  •   K Singh    15 年前

    WindowsVista版本是6.0,Windows7版本是6.1,理想情况下应该是7。这根本不是一个可靠的方法。

    与vista相比,Windows7在system32中添加了新的DLL。因此,当您搜索特定的DLL时,您将知道它的Windows7系统或xp/vista等旧版本。

        8
  •  0
  •   Bob Moore    15 年前

    您可以使用GetVersionEx来确定核心操作系统的版本,但是这种方法在面对使用同一个核心的多个产品时会变得混乱,我认为您无法通过编程将这些信息解码到特定SKU的级别。最好的办法就是找到一个字符串并让用户看到。文档的备注部分显示了一些简单的OSVERSIONINFOEX映射 here

    阅读 this Microsoft blog posting 对于当前关于这个话题的思考。基本上,它可以归结为使用GetProcAddress来查找您正试图使用的API,并优雅地降级。

        9
  •  0
  •   sdjuan    8 年前

    我来这里是为了寻找同样的东西,但是为了powershell,我发现这是最简单的:

    (gwmi -class Win32_OperatingSystem).name
    

    返回一行,如:

    Microsoft Windows 7 Enterprise |C:\Windows|\Device\Harddisk0\Partition2
    

    gwmi -class Win32_OperatingSystem | FL *
    

    挑选你需要的