如题

解决方案 »

  1.   


    参考:
    TestOs(CString &osversion)
    {
    OSVERSIONINFOEX osvi;
       BOOL bOsVersionInfoEx;   // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
       // If that fails, try using the OSVERSIONINFO structure.   ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
       osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);   if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
       {
          osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
          if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) 
             return FALSE;
       }   switch (osvi.dwPlatformId)
       {
          // Test for the Windows NT product family.
          case VER_PLATFORM_WIN32_NT:         osversion=_T("NT");
     break;
           
          case VER_PLATFORM_WIN32_WINDOWS:
             osversion=_T("98");
     break;
                  case VER_PLATFORM_WIN32s:
             osversion=_T("32");        
             break;
       }
       return TRUE; 
    }
    具体例子可以在MSDN中找到。
      

  2.   

    D7下的代码:  if Win32Platform <> VER_PLATFORM_WIN32_NT
         then WinOSVersion := //Win9X
         else WinNTOSVersion := Win32MajorVersion*10+Win32MinorVersion;WinNTOSVersion 为4X时就是NT4,50时就是Win2000,51就XP,52就2003最完成版本function TAPIMisc.myGetOSType: TOSType; // by Liu Yang 2002.8.7
    var
       VersionInfo : TOSVersionInfo;
    begin
       Result := osUnknown;
       // set the size of the record
       VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );   if Windows.GetVersionEx( VersionInfo ) then
          begin
             with VersionInfo do
             begin
                case dwPlatformId of
                   VER_PLATFORM_WIN32s   : Result := osWin31;
                   VER_PLATFORM_WIN32_WINDOWS : if dwMajorVersion=4 then
                                                  case dwMinorVersion of
                                                    0: Result := osWin95;
                                                    10: Result := osWin98;
                                                    90: Result := osWinMe;
                                                    else Result := osUnknown;
                                                  end else Result := osUnknown;
                   VER_PLATFORM_WIN32_NT      : case dwMajorVersion of
                                                  3: if dwMinorVersion=51
                                                        then Result := osWinNT3
                                                        else Result := osUnknown;
                                                  4: if dwMinorVersion=0
                                                        then Result := osWinNT4
                                                        else Result := osUnknown;
                                                  5: case dwMinorVersion of
                                                        0: Result := osWin2000;
                                                        1: Result := osWinXP
                                                        else Result := osWin2003;
                                                     end;
                                                  6: Result := osLongHorn;
                                                  else Result := osUnknown;
                                                end;
                end; // case dwPlatformId
             end; // with VersionInfo
          end; // if GetVersionEx
    end;http://lysoft.7u7.net