• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 505  文章 - 1034  trackbacks - 0
            <2008年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345


            子曾經(jīng)曰過:編程無他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(649)

            隨筆檔案(505)

            相冊

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 914445
            • 排名 - 14

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            今天用到這個(gè)了

            http://msdn2.microsoft.com/en-us/library/ms724429.aspx

            #include <windows.h>
            #include 
            <tchar.h>
            #include 
            <stdio.h>

            #define BUFSIZE 80

            typedef 
            void (WINAPI *PGNSI)(LPSYSTEM_INFO);

            int __cdecl _tmain()
            {
               OSVERSIONINFOEX osvi;
               SYSTEM_INFO si;
               PGNSI pGNSI;
               BOOL bOsVersionInfoEx;

               ZeroMemory(
            &si, sizeof(SYSTEM_INFO));
               ZeroMemory(
            &osvi, sizeof(OSVERSIONINFOEX));

               
            // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
               
            // If that fails, try using the OSVERSIONINFO structure.

               osvi.dwOSVersionInfoSize 
            = sizeof(OSVERSIONINFOEX);

               
            if!(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *&osvi)) )
               {
                  osvi.dwOSVersionInfoSize 
            = sizeof (OSVERSIONINFO);
                  
            if (! GetVersionEx ( (OSVERSIONINFO *&osvi) ) 
                     
            return FALSE;
               }

               
            // Call GetNativeSystemInfo if supported
               
            // or GetSystemInfo otherwise.

               pGNSI 
            = (PGNSI) GetProcAddress(
                  GetModuleHandle(TEXT(
            "kernel32.dll")), 
                  
            "GetNativeSystemInfo");
               
            if(NULL != pGNSI)
                  pGNSI(
            &si);
               
            else GetSystemInfo(&si);

               
            switch (osvi.dwPlatformId)
               {
                  
            // Test for the Windows NT product family.

                  
            case VER_PLATFORM_WIN32_NT:

                  
            // Test for the specific product.

                  
            if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 )
                  {
                     
            if( osvi.wProductType == VER_NT_WORKSTATION )
                         printf (
            "Windows Vista ");
                     
            else printf ("Windows Server \"Longhorn\" " );
                  }

                  
            if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
                  {
                     
            if( GetSystemMetrics(SM_SERVERR2) )
                        printf( 
            "Microsoft Windows Server 2003 \"R2\" ");
                     
            else if( osvi.wProductType == VER_NT_WORKSTATION &&
                        si.wProcessorArchitecture
            ==PROCESSOR_ARCHITECTURE_AMD64)
                     {
                        printf( 
            "Microsoft Windows XP Professional x64 Edition ");
                     }
                     
            else printf ("Microsoft Windows Server 2003, ");
                  }

                  
            if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
                     printf (
            "Microsoft Windows XP ");

                  
            if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
                     printf (
            "Microsoft Windows 2000 ");

                  
            if ( osvi.dwMajorVersion <= 4 )
                     printf (
            "Microsoft Windows NT ");

                  
            // Test for specific product on Windows NT 4.0 SP6 and later.
                  if( bOsVersionInfoEx )
                  {
                     
            // Test for the workstation type.
                     if ( osvi.wProductType == VER_NT_WORKSTATION &&
                          si.wProcessorArchitecture
            !=PROCESSOR_ARCHITECTURE_AMD64)
                     {
                        
            if( osvi.dwMajorVersion == 4 )
                           printf ( 
            "Workstation 4.0 " );
                        
            else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
                           printf ( 
            "Home Edition " );
                        
            else printf ( "Professional " );
                     }
                        
                     
            // Test for the server type.
                     else if ( osvi.wProductType == VER_NT_SERVER || 
                               osvi.wProductType 
            == VER_NT_DOMAIN_CONTROLLER )
                     {
                        
            if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==2)
                        {
                           
            if ( si.wProcessorArchitecture ==
                                PROCESSOR_ARCHITECTURE_IA64 )
                           {
                               
            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                                  printf ( 
            "Datacenter Edition "
                                           
            "for Itanium-based Systems" );
                               
            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                                  printf ( 
            "Enterprise Edition "
                                           
            "for Itanium-based Systems" );
                           }

                           
            else if ( si.wProcessorArchitecture ==
                                     PROCESSOR_ARCHITECTURE_AMD64 )
                           {
                               
            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                                  printf ( 
            "Datacenter x64 Edition " );
                               
            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                                  printf ( 
            "Enterprise x64 Edition " );
                               
            else printf( "Standard x64 Edition " );
                           }

                           
            else
                           {
                               
            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                                  printf ( 
            "Datacenter Edition " );
                               
            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                                  printf ( 
            "Enterprise Edition " );
                               
            else if ( osvi.wSuiteMask & VER_SUITE_BLADE )
                                  printf ( 
            "Web Edition " );
                               
            else printf ( "Standard Edition " );
                           }
                        }
                        
            else if(osvi.dwMajorVersion==5 && osvi.dwMinorVersion==0)
                        {
                           
            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                              printf ( 
            "Datacenter Server " );
                           
            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                              printf ( 
            "Advanced Server " );
                           
            else printf ( "Server " );
                        }
                        
            else  // Windows NT 4.0 
                        {
                           
            if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                              printf (
            "Server 4.0, Enterprise Edition " );
                           
            else printf ( "Server 4.0 " );
                        }
                     }
                  }
                  
            // Test for specific product on Windows NT 4.0 SP5 and earlier
                  else  
                  {
                     HKEY hKey;
                     TCHAR szProductType[BUFSIZE];
                     DWORD dwBufLen
            =BUFSIZE*sizeof(TCHAR);
                     LONG lRet;

                     lRet 
            = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                        TEXT(
            "SYSTEM\\CurrentControlSet\\Control\\"
                             
            "ProductOptions"), 0, KEY_QUERY_VALUE, &hKey );
                     
            if( lRet != ERROR_SUCCESS )
                        
            return FALSE;

                     lRet 
            = RegQueryValueEx( hKey, TEXT("ProductType"),
                        NULL, NULL, (LPBYTE) szProductType, 
            &dwBufLen);
                     RegCloseKey( hKey );

                     
            if( (lRet != ERROR_SUCCESS) ||
                         (dwBufLen 
            > BUFSIZE*sizeof(TCHAR)) )
                        
            return FALSE;

                     
            if ( lstrcmpi( TEXT("WINNT"), szProductType) == 0 )
                        printf( 
            "Workstation " );
                     
            if ( lstrcmpi( TEXT("LANMANNT"), szProductType) == 0 )
                        printf( 
            "Server " );
                     
            if ( lstrcmpi( TEXT("SERVERNT"), szProductType) == 0 )
                        printf( 
            "Advanced Server " );
                     printf( 
            "%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );
                  }

                  
            // Display service pack (if any) and build number.

                  
            if( osvi.dwMajorVersion == 4 && 
                      lstrcmpi( osvi.szCSDVersion, TEXT(
            "Service Pack 6") ) == 0 )
                  { 
                     HKEY hKey;
                     LONG lRet;

                     
            // Test for SP6 versus SP6a.
                     lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                        TEXT(
            "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\"
                             
            "Hotfix\\Q246009"), 0, KEY_QUERY_VALUE, &hKey );
                     
            if( lRet == ERROR_SUCCESS )
                        printf( 
            "Service Pack 6a (Build %d)\n"
                        osvi.dwBuildNumber 
            & 0xFFFF );         
                     
            else // Windows NT 4.0 prior to SP6a
                     {
                        _tprintf( TEXT(
            "%s (Build %d)\n"),
                           osvi.szCSDVersion,
                           osvi.dwBuildNumber 
            & 0xFFFF);
                     }

                     RegCloseKey( hKey );
                  }
                  
            else // not Windows NT 4.0 
                  {
                     _tprintf( TEXT(
            "%s (Build %d)\n"),
                        osvi.szCSDVersion,
                        osvi.dwBuildNumber 
            & 0xFFFF);
                  }

                  
            break;

                  
            // Test for the Windows Me/98/95.
                  case VER_PLATFORM_WIN32_WINDOWS:

                  
            if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
                  {
                      printf (
            "Microsoft Windows 95 ");
                      
            if (osvi.szCSDVersion[1]=='C' || osvi.szCSDVersion[1]=='B')
                         printf(
            "OSR2 " );
                  } 

                  
            if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
                  {
                      printf (
            "Microsoft Windows 98 ");
                      
            if ( osvi.szCSDVersion[1]=='A' || osvi.szCSDVersion[1]=='B')
                         printf(
            "SE " );
                  } 

                  
            if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
                  {
                      printf (
            "Microsoft Windows Millennium Edition\n");
                  } 
                  
            break;

                  
            case VER_PLATFORM_WIN32s:

                  printf (
            "Microsoft Win32s\n");
                  
            break;
               }
               
            return TRUE; 
            }
            posted on 2007-05-09 20:49 七星重劍 閱讀(1120) 評論(1)  編輯 收藏 引用 所屬分類: PL--c/c++

            FeedBack:
            # re: 判斷操作系統(tǒng)版本 2007-05-23 21:36 秒大刀
            阿來加油!你是最棒的!  回復(fù)  更多評論
              
            色综合久久中文字幕综合网| 狠狠综合久久综合中文88| 亚洲国产视频久久| 久久频这里精品99香蕉久| 亚洲乱码精品久久久久..| 91精品国产高清91久久久久久| 欧美综合天天夜夜久久| 麻豆久久| 国产精品久久午夜夜伦鲁鲁| 午夜不卡888久久| 理论片午午伦夜理片久久| 亚洲国产另类久久久精品小说 | 久久亚洲国产中v天仙www| 久久久久国产| 99国产精品久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久久久青草线蕉综合超碰| 久久久久亚洲Av无码专| 久久高清一级毛片| 久久精品国产亚洲77777| 久久久国产亚洲精品| 久久久久综合网久久| 国产精品久久久久久五月尺| 国产精品久久久久影院嫩草| 久久只有这里有精品4| 天天爽天天爽天天片a久久网| 久久精品国产亚洲AV影院| 国产激情久久久久影院| 一本一本久久A久久综合精品| 亚洲а∨天堂久久精品9966| 久久国产成人| 久久本道综合久久伊人| 国产精品嫩草影院久久| 日本精品久久久久中文字幕| 久久99精品久久久久久动态图| 色欲久久久天天天综合网精品| 99久久免费国产精品特黄| 亚州日韩精品专区久久久| 色婷婷噜噜久久国产精品12p | 91久久九九无码成人网站| 99久久99这里只有免费的精品|