天空是藍(lán)色的

          做好軟件為中國 #gcc -c helloworld.c -o helloworld.o //編譯目標(biāo)文件 #gcc helloworld.o -o helloworld //編譯成可執(zhí)行exe #helloworld //運(yùn)行exe
          數(shù)據(jù)加載中……
          C語言取得windows操作系統(tǒng)信息

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

          #define BUFSIZE 80

          BOOL GetOSVer(char *szOSName);

          int main()
          {
           char szname[MAX_PATH];
           memset(szname,0,MAX_PATH);

           BOOL bRet = GetOSVer(szname);

           printf("Your Os version is %s\n ",szname);

           return 0;
          }

          BOOL GetOSVer(char *szname)
          {
             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:

                   // Test for the specific product family.
                   if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
                      strcpy(szname,"Microsoft Windows Server 2003 family, ");
            

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

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

                   if ( osvi.dwMajorVersion <= 4 )
                      strcpy(szname,"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 )
                      {
                         if( osvi.dwMajorVersion == 4 )
                            strcat(szname, "Workstation 4.0 " );
                         else if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
                            strcat(szname, "Home Edition " );
                         else
                            strcat(szname,  "Professional " );
                      }
                     
                      // Test for the server type.
                      else if ( osvi.wProductType == VER_NT_SERVER )
                      {
                         if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
                         {
                            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                               strcat(szname, "Datacenter Edition " );
                            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                               strcat(szname, "Enterprise Edition " );
                            else if ( osvi.wSuiteMask == VER_SUITE_BLADE )
                               strcat(szname, "Web Edition " );
                            else
                               strcat(szname, "Standard Edition " );
                         }

                         else if( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
                         {
                            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
                               strcat(szname, "Datacenter Server " );
                            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                               strcat(szname, "Advanced Server " );
                            else
                               strcat(szname, "Server " );
                         }

                         else  // Windows NT 4.0
                         {
                            if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
                               strcat(szname,"Server 4.0, Enterprise Edition " );
                            else
                               strcat(szname, "Server 4.0 " );
                         }
                      }
                   }
                   else  // Test for specific product on Windows NT 4.0 SP5 and earlier
                   {
                      HKEY hKey;
                      char szProductType[BUFSIZE];
                      DWORD dwBufLen=BUFSIZE;
                      LONG lRet;

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

                      lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
                         (LPBYTE) szProductType, &dwBufLen);
                      if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
                         return FALSE;

                      RegCloseKey( hKey );

                      if ( lstrcmpi( "WINNT", szProductType) == 0 )
                         strcat(szname, "Workstation " );
                      if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
                         strcat(szname, "Server " );
                      if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
                         strcat(szname,"Advanced Server " );

                      printf( "%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );
                   }

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

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

                      // Test for SP6 versus SP6a.
                      lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                         "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
                      {
                         printf( "%s (Build %d)\n",
                            osvi.szCSDVersion,
                            osvi.dwBuildNumber & 0xFFFF);
                      }

                      RegCloseKey( hKey );
                   }
                   else // Windows NT 3.51 and earlier or Windows 2000 and later
                   {
                      printf( "%s (Build %d)\n",
                         osvi.szCSDVersion,
                         osvi.dwBuildNumber & 0xFFFF);
                   }


                   break;

                // Test for the Windows 95 product family.
                case VER_PLATFORM_WIN32_WINDOWS:

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

                   if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
                   {
                       strcpy(szname,"Microsoft Windows 98 ");
                       if ( osvi.szCSDVersion[1] == 'A' )
                          strcat(szname,"SE " );
                   }

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

                case VER_PLATFORM_WIN32s:

                   printf ("Microsoft Win32s\n");
                   break;
             }
            // getchar();
             return TRUE;
          }


           

          posted on 2006-02-14 14:53 bluesky 閱讀(2708) 評論(0)  編輯  收藏 所屬分類: C/C++

          主站蜘蛛池模板: 库尔勒市| 扶余县| 旺苍县| 肃南| 若尔盖县| 北票市| 商丘市| 丁青县| 松溪县| 上虞市| 井冈山市| 望谟县| 定安县| 晋城| 滨海县| 昆山市| 扬中市| 黔南| 从江县| 凤山县| 仙游县| 阿拉善左旗| 额敏县| 格尔木市| 永善县| 扶余县| 皋兰县| 聊城市| 全椒县| 定兴县| 永春县| 班戈县| 通化市| 洛隆县| 乌拉特前旗| 沾化县| 宜良县| 乃东县| 鲁甸县| 铜川市| 红河县|