如何判断操作系统的类型?(windows2000,windowsXp,WindowsVista等)

解决方案 »

  1.   

    供参考,还没有判断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;
      

  2.   

    还有方法再详细一点吗?比如2000有server,professional等,另外,好像2000和2003无法区分,他们的dwPlatformId和dwMajorVersion一样,都是2和5
      

  3.   

    if (OS.dwMajorVersion=6) and (OS.dwMinorVersion=0) then 
    result := osVista;  如果要更精细就用 OSVERSIONINFOEX.wProductType = VER_NT_SERVER 就是 server 查SDK了  
      

  4.   

    打开网站 http://www.msdn.com/
    切换到英文站点 United States(English)
    搜索 GetVersionEx
    有一个搜索结果是
    OSVERSIONINFO Structure (Windows) 
    点开就可以看到函数GetVersionEx获取信息的详细说明了