【发布时间】:2009-11-19 07:10:16
【问题描述】:
如何检测Win7 Home Premium、Win7 Professional、Win7 Enterprise或Win7 Ultimate的操作系统?
【问题讨论】:
标签: api winapi windows-7 operating-system
如何检测Win7 Home Premium、Win7 Professional、Win7 Enterprise或Win7 Ultimate的操作系统?
【问题讨论】:
标签: api winapi windows-7 operating-system
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。
【讨论】:
我使用HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion下的“Edition”键来确定windows版本,不知道是不是唯一的?谢谢。
EditionID = 终极版 版本 ID = 企业 EditionID = 专业 EditionID = 高级版
【讨论】:
他用win32 api标记了这个问题。
GetVersionEx() 等。是你需要的。有关更深入的示例,请参阅此 code sample。
【讨论】:
在 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
您需要将注册表作为一个单元包含在您的应用中
【讨论】:
尝试 WMI:主机 localhost,命名空间 root\cimv2(这些是默认值)SELECT Caption FROM Win32_OperatingSystem
【讨论】:
我打算建议看看它装运的盒子;)
【讨论】:
在我看来,使用检查版本号之类的方法是不正确的。我正在阅读一篇关于最佳实践的文章(丢失了链接),它明确表示永远不要使用这些版本号,微软可能会在未来的更新中更改这些版本号来检测 Windows 版本。
Windows Vista 是 6.0 版,Windows 7 是 6.1,理想情况下应该是 7。这根本不可靠。
更好的方法是检查每个版本的 windows 特有的功能的存在。例如,在 windows vista/7 home basic 中您找不到航空体验。同样的方式终极版带有bitlocker等,而家庭高级版则没有。
MSDN 将详细说明每个版本中可用的功能以及如何查询是否可用。基于此,您可以决定什么是 Windows 的基本版本。您还可以使用从系统 dll 中查询版本信息来检测确切的 Windows 构建日期等。
与 vista 相比,在 windows 7 系统中添加了新的 DLL。因此,当您搜索特定的 dll 时,您会知道它是 windows 7 系统还是 xp/vista 等旧版本。
【讨论】:
您可以使用 GetVersionEx 来确定核心操作系统版本,但这种方法在面对使用共同核心的多个产品时会变得混乱,而且我认为您不能以编程方式将此信息解码到特定 SKU 的级别。最好的办法是找到一个字符串并让用户看到。文档here的备注部分显示了一些简单的OSVERSIONINFOEX 映射
阅读this Microsoft blog posting 了解有关此主题的当前想法。基本上它归结为使用 GetProcAddress 来查找您尝试使用的 API 并优雅地降级。
【讨论】:
我来这里是为了寻找同样的东西,但对于 powershell 并发现这是最简单的:
(gwmi -class Win32_OperatingSystem).name
返回如下一行:
Microsoft Windows 7 Enterprise |C:\Windows|\Device\Harddisk0\Partition2
如果您想要版本号等,请使用详细的形式,例如
gwmi -class Win32_OperatingSystem | FL *
挑选你需要的东西
【讨论】: