如何检测Win7家庭高级版,Win7专业版,Win7企业版或Win7终极版的操作系统?
答案 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 *
并挑选出你需要的东西