delphi一个非常完整的取WINDOWS OS 版本信息的函数


本文整理自网络,侵删。

  本人写的一个能取目前所有 Windows 操作系统的版本信息文本的函数。支持VISTA的版本信息。
uses Shlobj, ShellAPI;

{*---------------------------------*}

function GetOSVersionText: string;
var
Info:TOSVersionInfoEx;
Key: HKEY;
begin
Result := '';
if (not GetOSVersionInfo(Info)) then Exit;

case Info.dwPlatformId of
{ Win32s }
VER_PLATFORM_WIN32s:
Result := 'Microsoft Win32s';

{ Windows 9x }
VER_PLATFORM_WIN32_WINDOWS:
if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 0) then
begin
Result := 'Microsoft Windows 95';
if (Info.szCSDVersion[1] in ['B', 'C']) then
Result := Result +'OSR2';
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 10) then
begin
Result := 'Microsoft Windows 98';
if (Info.szCSDVersion[1] = 'A') then
Result := Result + ' SE';
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 90) then
Result := 'Microsoft Windows Millennium Edition';

{ Windows NT }
VER_PLATFORM_WIN32_NT:
begin
{ Version }
if (Info.dwMajorVersion > 5) then
Result := 'Microsoft Vista'
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
Result := 'Microsoft Windows Server 2003'
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then
Result := 'Microsoft Windows XP'
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
Result := 'Microsoft Windows 2000'
else
Result := 'Microsoft Windows NT';

{ Extended }
if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then
begin
{ ProductType }
if (Info.wProductType = VER_NT_WORKSTATION) then
begin
if (Info.dwMajorVersion = 4) then
Result := Result + #10'Workstation 4.0'
else if (Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then
Result := Result + #13'Home Edition'
else
Result := Result + #10'Professional';
end
else if (Info.wProductType = VER_NT_SERVER) then
begin
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + #10'Datacenter Edition'
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + #10'Enterprise Edition'
else if (Info.wSuiteMask = VER_SUITE_BLADE) then
Result := Result + #10'Web Edition'
else
Result := Result + #10'Standard Edition';
end
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + #10'Datacenter Server'
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + #10'Advanced Server'
else
Result := Result + #10'Server';
end
else
begin
Result := Result + #10'Server ' +
IntToStr(Info.dwMajorVersion) + '.' +
IntToStr(Info.dwMinorVersion);
if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + ', Enterprise Edition';
end;
end;
end;

{ CSDVersion }
if (Info.dwMajorVersion = 4) and
(StrIComp(Info.szCSDVersion, 'Service Pack 6') = 0) and
(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009', 0,
KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) then
begin
Result := Result + #10'Service Pack 6a';
RegCloseKey(Key);
end
else
Result := Result + #10 + StrPas(Info.szCSDVersion);

Result := Result + #10'Build ' + IntToStr(Info.dwBuildNumber and $FFFF) + '';
end;
end;
end;

作者: 陆岛工作室

相关阅读 >>

一些不常用的且功能相当有用的Delphi函数

Delphi paramstr 获取外部参数

Delphi 网址链接结尾自动补/

tstrings 的用法

Delphi url 编码的装换

Delphi 如何使用sendmessage发送后台组合键消息(ctrl+xxx)

Delphi append 追加内容到文件中

Delphi idhttp下载html的代码(含错误处理)

Delphi length 统计指定字符串的长度(即个数)

Delphi indy tidhttp tidhttpserver post get

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...