Programming/Delphi

현재 OS 알아내기

통통만두 2010. 12. 16. 20:35
반응형
type
TWindowsVersion = ( wvUnknow, wvWin31, wvWin9x, wvWin95, wvWin95OSR2, wvWin98, wvWin98SE, wvWinMe,
                    wvWinNT, wvWinNT3, wvWinNT4, wvWin2000, wvWinXP, wvWin2003, wvWinVista, wvWin7 );


function GetWindowsVersion(var WindowsName: String): TWindowsVersion;
var
  VI: TOSVersionInfo;
  WinVersion: TWindowsVersion;
begin
  VI.dwOSVersionInfoSize := SizeOf(VI);
  GetVersionEx(VI);

  WinVersion := wvUnknow;
  case VI.dwPlatformID of
    VER_PLATFORM_WIN32s: WinVersion := wvWin31;
    VER_PLATFORM_WIN32_WINDOWS :
    begin
      case VI.dwMinorVersion of
        0 :
        begin
          if Trim(VI.szCSDVersion[1]) = 'B' then
            WinVersion := wvWin95OSR2
          else
            WinVersion := wvWin95;
        end;
        10 :
        begin
          if Trim(VI.szCSDVersion[1]) = 'A' then
            WinVersion := wvWin98SE
          else
            WinVersion := wvWin98;
        end;
        90 :
        begin
          if (VI.dwBuildNumber = 73010104) then
            WinVersion := wvWinMe;
        end;
        else
          WinVersion := wvWin9x;
      end;
    end;
    VER_PLATFORM_WIN32_NT :
    begin
      case VI.dwMajorVersion of
        3 : WinVersion := wvWinNT3;
        4 : WinVersion := wvWinNT4;
        5 :
        begin
          case VI.dwMinorVersion of
            0 : WinVersion := wvWin2000;
            1 : WinVersion := wvWinXP;
            2 : WinVersion := wvWin2003;
            else
              WinVersion := wvWinNT;
          end;
        end;
        6 :
        begin
          case VI.dwMinorVersion of
            0 : WinVersion := wvWinVista;
            1 : WinVersion := wvWin7;
          end;
        end;
      end;
    end;
  end;

  case WinVersion of
    wvUnknow    : WindowsName := 'Unknow';
    wvWin31     : WindowsName := 'Win31';
    wvWin9x     : WindowsName := 'Win9x';
    wvWin95     : WindowsName := 'Win95';
    wvWin95OSR2 : WindowsName := 'Win95R2';
    wvWin98     : WindowsName := 'Win98';
    wvWin98SE   : WindowsName := 'Win98SE';
    wvWinMe     : WindowsName := 'WinME';
    wvWinNT     : WindowsName := 'WinNT';
    wvWinNT3    : WindowsName := 'WinNT3';
    wvWinNT4    : WindowsName := 'WinNT4';
    wvWin2000   : WindowsName := 'Win2000';
    wvWinXP     : WindowsName := 'WinXP';
    wvWin2003   : WindowsName := 'Win2003';
    wvWinVista  : WindowsName := 'WinVista';
    wvWin7      : WindowsName := 'Win7';
  end;
end;
반응형