供参考,还没有判断Vista的 function GetOS :TOSVersion; var OS :TOSVersionInfo; begin ZeroMemory(@OS,SizeOf(OS)); OS.dwOSVersionInfoSize:=SizeOf(OS); GetVersionEx(OS); Result:=osUnknown; if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then begin case OS.dwMajorVersion of 3: Result:=osNT3; 4: Result:=osNT4; 5: Result:=os2K; end; if (OS.dwMajorVersion=5) and (OS.dwMinorVersion=1) then Result:=osXP; end else begin if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then begin Result:=os95; if (Trim(OS.szCSDVersion)='B') then Result:=os95OSR2; end else if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then begin Result:=os98; if (Trim(OS.szCSDVersion)='A') then Result:=os98SE; end else if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then Result:=osME; end; end;
function GetOS :TOSVersion;
var
OS :TOSVersionInfo;
begin
ZeroMemory(@OS,SizeOf(OS));
OS.dwOSVersionInfoSize:=SizeOf(OS);
GetVersionEx(OS);
Result:=osUnknown;
if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
case OS.dwMajorVersion of
3: Result:=osNT3;
4: Result:=osNT4;
5: Result:=os2K;
end;
if (OS.dwMajorVersion=5) and (OS.dwMinorVersion=1) then
Result:=osXP;
end else begin
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then begin
Result:=os95;
if (Trim(OS.szCSDVersion)='B') then
Result:=os95OSR2;
end else
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then begin
Result:=os98;
if (Trim(OS.szCSDVersion)='A') then
Result:=os98SE;
end else
if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
Result:=osME;
end;
end;
result := osVista; 如果要更精细就用 OSVERSIONINFOEX.wProductType = VER_NT_SERVER 就是 server 查SDK了
切换到英文站点 United States(English)
搜索 GetVersionEx
有一个搜索结果是
OSVERSIONINFO Structure (Windows)
点开就可以看到函数GetVersionEx获取信息的详细说明了