最新:Vista、Windows2008和Windows7如何判断?(50)

  • 主题发起人 主题发起人 kanbor
  • 开始时间 开始时间
K

kanbor

Unregistered / Unconfirmed
GUEST, unregistred user!
通过Windows的Api函数GetVersionEx获得的OSVersionInfo的各项值,如:MajorVersion、MinorVersion等就可以区分Windows早期的大部分版本的区别,但现在使用同样的方法却不能区分Vista和Windows2008它们的各项值均相同,还有没有其它方法可以区分包括标题的三个版本呢??
 
过来学习~~
 
BuildNumber也一样吗?
 
是啊,现在测试的结果是BuildNumber也一样的,还有没有其它的方法呢?请高手帮忙解决!!
 
windows7的版本应该是7吧,其他两个是6
 
Windows7我还没测过,有没有直接读取系统名字的方法?如Windows Vista、Windows 2008、Windows 7等这样可能更直接!
 
uses Registry;function TForm1.GetWindowsVersion: string;var VerInfo: TOsversionInfo; PlatformId, VersionNumber: string; Reg: TRegistry;begin VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo); GetVersionEx(VerInfo); // Detect platform Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; case VerInfo.dwPlatformId of VER_PLATFORM_WIN32s: begin // Registry (Huh? What registry?) PlatformId := 'Windows 3.1'; end; VER_PLATFORM_WIN32_WINDOWS: begin // Registry Reg.OpenKey('/SOFTWARE/Microsoft/Windows/CurrentVersion', False); PlatformId := Reg.ReadString('ProductName'); VersionNumber := Reg.ReadString('VersionNumber'); end; VER_PLATFORM_WIN32_NT: begin // Registry Reg.OpenKey('/SOFTWARE/Microsoft/Windows NT/CurrentVersion', False); PlatformId := Reg.ReadString('ProductName'); VersionNumber := Reg.ReadString('CurrentVersion'); end; end; Reg.Free; Result := PlatformId + ' (version ' + VersionNumber + ')';end;
 
楼上的方法我马上试试。另Windows 7的版本号是6.1,而不是估计的 7谢谢大家的支持。
 
windows 7是6.1??那win2008是多少?我记得vista是6.0,win2008是6.1,windows 7是6.2啊???!!!
 
微软公司的程序员最近忙的补袜子,可能过一段时间就好了。唉,不用还不行。
 
谢谢大家的帮忙,现在问题已经解决,我总结一下,希望对大家有帮助:Vista和Windows 2008版本都是6.0Windows 7是6.1de410建议的注册表查询方法虽然可以得到结果,但注册表究竟是可以修改的所以不好。原来通过GetVersionEx获得的OSVersionInfo的各项值的内容有限,后来使用的是GetVersionEx获得的OSVersionInfoEx(扩展的信息结构,包含的内容更多)的各项值的内容有一个ProductType表示工作站后者服务器,这时工作站的是Vista,服务器的是Windows 2008,至此问题解决。
 
多人接受答案了。
 
后退
顶部