请问如何获得当前系统的具体类型?
使用GetVersionEX只能获得大体的类型,比如win2000,winxp,windows .net server
请问怎样可以定位到具体的版本类型,比如Window 2000 Server
另外,好像GetVersionEX好像也区别不了winxp和windows .net server
...全文
616打赏收藏
请问如何获得当前系统的具体类型?
请问如何获得当前系统的具体类型? 使用GetVersionEX只能获得大体的类型,比如win2000,winxp,windows .net server 请问怎样可以定位到具体的版本类型,比如Window 2000 Server 另外,好像GetVersionEX好像也区别不了winxp和windows .net server
试一试我写的这个函数:
function GetWindowsVersionString: string;
begin
case Win32Platform of
VER_PLATFORM_WIN32s:
Result := 'Windows 3.x';
VER_PLATFORM_WIN32_WINDOWS:
Result := 'Windows 9x';
VER_PLATFORM_WIN32_NT:
case Win32MajorVersion of
3, 4: Result := 'Windows NT';
5: if Win32MinorVersion > 0 then
Result := 'Windows XP'
else
Result := 'Windows 2000';
else Result := 'Windows XP';
end;
else Result := 'Windows';
end;
Result := Format('%s %u.%u (Build %u) %s', [Result, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber, Win32CSDVersion]);
end;
function GetOSVersion;
var
OSVI :TOSVersionInfo;
begin
ZeroMemory(@OSVI, SizeOf(OSVI));
OSVI.dwOSVersionInfoSize := SizeOf(OSVI);
GetVersionEx(OSVI);
Result := OSUnknown;
if OSVI.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
case OSVI.dwMajorVersion of
3: Result := OSNT3;
4: Result := OSNT4;
5: Result := OS2K;
end;
if (OSVI.dwMajorVersion = 5) and (OSVI.dwMinorVersion = 1) then
begin
Result:=osXP;
end else
begin
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 0) then
begin
Result := OS95;
if (Trim(OSVI.szCSDVersion) = 'B') then
Result :=OS95OSR2;
end else
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 10) then
begin
Result := OS98;
if (Trim(OSVI.szCSDVersion) = 'A') then
Result := OS98SE;
end else
if (OSVI.dwMajorVersion = 4) and (OSVI.dwMinorVersion = 90) then
Result := OSME;
end;
end;
end;
过程:用来显示系统版本号
procedure GetOSVersionA;
var
OS: TOSVersion;
OSVersion: String;
begin
OS := GetOSVersion;;
case OS of
OS95: OSVersion:='Microsoft Windows 95';
OS95OSR2: OSVersion:='Microsoft Windows 95 OSR2';
OS98: OSVersion:='Microsoft Windows 98';
OS98SE: OSVersion:='Microsoft Windows 98 Second Edition';
OSME: OSVersion:='Microsoft Windows Millenium Edition';
OSNT3: OSVersion:='Microsoft Windows NT 3.X';
OSNT4: OSVersion:='Microsoft Windows NT 4.X';
OS2K: OSVersion:='Microsoft Windows 2000';
OSXP: OSVersion:='Microsoft Windows XP';
end;
Label_OSVersion.Caption := OSVersion ; //修改这里的VCL名称为你用的
end;