如何检测Win7家庭高级版,Win7专业版,Win7企业版或Win7终极版的操作系统?

时间:2009-11-19 07:10:17

标签: api winapi windows-7 operating-system

如何检测Win7家庭高级版,Win7专业版,Win7企业版或Win7终极版的操作系统?

9 个答案:

答案 0 :(得分:3)

Determine Windows Version and Edition

查看此帖子Detect OS version,看看是否有帮助。这是针对XP的,但它应该对你有所帮助。

同时检查此http://andrewensley.com/2009/06/c-detect-windows-os-part-1/this one is for Vista

答案 1 :(得分:1)

他用win32 api标记了这个问题。

GetVersionEx()等。是你需要的。有关更深入的示例,请参阅此code sample

答案 2 :(得分:1)

我在HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion下使用密钥“Edition”来确定Windows版本,我不知道它是否是唯一的?感谢。

EditionID =终极 EditionID =企业版 版本ID =专业版 版本ID =高级

答案 3 :(得分:1)

在Delphi中我会在Windows XP及更高版本中使用此方法,它似乎是最直接的,并且此注册表项应始终存在

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

您需要将注册表作为一个单元包含在您的应用中

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我打算建议查看它发货的盒子;)

答案 6 :(得分:0)

在我看来,使用检查版本号等方法是不正确的。我正在阅读一篇关于最佳实践的文章(丢失链接),并且明确表示从不使用这些版本号,微软可能会在未来的更新中更改以检测Windows版本。

Windows Vista版本为6.0,Windows 7版本为6.1,理想情况下应该是7.这根本不可靠。

更好的方法是检查每个版本的窗口特有的功能是否存在。例如,在windows vista / 7 home basic中,您将找不到航空体验。同样的方式终极版附带bitlocker等和家庭高级没有。

MSDN将详细说明每个版本中可用的功能以及如何查询其是否可用。基于此,您可以决定什么是Windows的基本版本。您还可以使用从系统dll查询版本信息来检测确切的Windows构建日期等。

使用Windows 7,与vista相比,system32中添加了新的DLL。因此,当您搜索特定的dll时,您会知道它的Windows 7系统还是旧版本,如xp / vista。

答案 7 :(得分:0)

您可以使用GetVersionEx来确定核心操作系统版本,但是这种方法会因使用通用核心的多个产品而变得混乱,我认为您不能以编程方式将此信息解码到特定SKU的级别。你可以逃脱的最好的方法是找到一个字符串并让用户看到它。一些简单的OSVERSIONINFOEX映射显示在文档的here

的备注部分中

阅读this Microsoft blog posting,了解有关此主题的当前想法。基本上,它归结为使用GetProcAddress查找您尝试使用的API并优雅地降级。

答案 8 :(得分:0)

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

(gwmi -class Win32_OperatingSystem).name

返回如下行:

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

如果您需要版本号等,请使用详细的表格,如

gwmi -class Win32_OperatingSystem | FL *

并挑选出你需要的东西