日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows 系统版本判断

發布時間:2024/4/11 windows 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 系统版本判断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是判斷操作系統的代碼

?

Cpp代碼??
  • #include?<windows.h>??
  • #include?<tchar.h>??
  • #include?<stdio.h>??
  • #include?<strsafe.h>??
  • ??
  • #pragma?comment(lib,?"User32.lib")??
  • ??
  • #define?BUFSIZE?256??
  • ??
  • typedef?void?(WINAPI?*PGNSI)(LPSYSTEM_INFO);??
  • typedef?BOOL?(WINAPI?*PGPI)(DWORD,?DWORD,?DWORD,?DWORD,?PDWORD);??
  • ??
  • BOOL?GetOSDisplayString(?LPTSTR?pszOS)??
  • {??
  • ???OSVERSIONINFOEX?osvi;??
  • ???SYSTEM_INFO?si;??
  • ???PGNSI?pGNSI;??
  • ???PGPI?pGPI;??
  • ???BOOL?bOsVersionInfoEx;??
  • ???DWORD?dwType;??
  • ??
  • ???ZeroMemory(&si,?sizeof(SYSTEM_INFO));??
  • ???ZeroMemory(&osvi,?sizeof(OSVERSIONINFOEX));??
  • ??
  • ???osvi.dwOSVersionInfoSize?=?sizeof(OSVERSIONINFOEX);??
  • ???bOsVersionInfoEx?=?GetVersionEx((OSVERSIONINFO*)?&osvi);??
  • ??
  • ???if(bOsVersionInfoEx?!=?NULL?)?return?1;??
  • ??
  • ???//?Call?GetNativeSystemInfo?if?supported?or?GetSystemInfo?otherwise.??
  • ??
  • ???pGNSI?=?(PGNSI)?GetProcAddress(??
  • ??????GetModuleHandle(TEXT("kernel32.dll")),???
  • ??????"GetNativeSystemInfo");??
  • ???if(NULL?!=?pGNSI)??
  • ??????pGNSI(&si);??
  • ???else?GetSystemInfo(&si);??
  • ??
  • ???if?(?VER_PLATFORM_WIN32_NT==osvi.dwPlatformId?&&???
  • ????????osvi.dwMajorVersion?>?4?)??
  • ???{??
  • ??????StringCchCopy(pszOS,?BUFSIZE,?TEXT("Microsoft?"));??
  • ??
  • ??????//?Test?for?the?specific?product.??
  • ??
  • ??????if?(?osvi.dwMajorVersion?==?6?)??
  • ??????{??
  • ?????????if(?osvi.dwMinorVersion?==?0?)??
  • ?????????{??
  • ????????????if(?osvi.wProductType?==?VER_NT_WORKSTATION?)??
  • ????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?Vista?"));??
  • ????????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?Server?2008?"?));??
  • ?????????}??
  • ??
  • ?????????if?(?osvi.dwMinorVersion?==?1?)??
  • ?????????{??
  • ????????????if(?osvi.wProductType?==?VER_NT_WORKSTATION?)??
  • ????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?7?"));??
  • ????????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?Server?2008?R2?"?));??
  • ?????????}??
  • ???????????
  • ?????????pGPI?=?(PGPI)?GetProcAddress(??
  • ????????????GetModuleHandle(TEXT("kernel32.dll")),???
  • ????????????"GetProductInfo");??
  • ??
  • ?????????pGPI(?osvi.dwMajorVersion,?osvi.dwMinorVersion,?0,?0,?&dwType);??
  • ??
  • ?????????switch(?dwType?)??
  • ?????????{??
  • ????????????case?PRODUCT_ULTIMATE:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Ultimate?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_PROFESSIONAL:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Professional"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_HOME_PREMIUM:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Home?Premium?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_HOME_BASIC:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Home?Basic?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_ENTERPRISE:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Enterprise?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_BUSINESS:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Business?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_STARTER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Starter?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_CLUSTER_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Cluster?Server?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_DATACENTER_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Datacenter?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_DATACENTER_SERVER_CORE:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Datacenter?Edition?(core?installation)"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_ENTERPRISE_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Enterprise?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_ENTERPRISE_SERVER_CORE:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Enterprise?Edition?(core?installation)"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_ENTERPRISE_SERVER_IA64:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Enterprise?Edition?for?Itanium-based?Systems"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_SMALLBUSINESS_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Small?Business?Server"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Small?Business?Server?Premium?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_STANDARD_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Standard?Edition"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_STANDARD_SERVER_CORE:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Standard?Edition?(core?installation)"?));??
  • ???????????????break;??
  • ????????????case?PRODUCT_WEB_SERVER:??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Web?Server?Edition"?));??
  • ???????????????break;??
  • ?????????}??
  • ??????}??
  • ??
  • ??????if?(?osvi.dwMajorVersion?==?5?&&?osvi.dwMinorVersion?==?2?)??
  • ??????{??
  • ?????????if(?GetSystemMetrics(SM_SERVERR2)?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Windows?Server?2003?R2,?"));??
  • ?????????else?if?(?osvi.wSuiteMask?&?VER_SUITE_STORAGE_SERVER?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Windows?Storage?Server?2003"));??
  • ?????????else?if?(?osvi.wSuiteMask?&?VER_SUITE_WH_SERVER?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Windows?Home?Server"));??
  • ?????????else?if(?osvi.wProductType?==?VER_NT_WORKSTATION?&&??
  • ??????????????????si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)??
  • ?????????{??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Windows?XP?Professional?x64?Edition"));??
  • ?????????}??
  • ?????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?Server?2003,?"));??
  • ??
  • ?????????//?Test?for?the?server?type.??
  • ?????????if?(?osvi.wProductType?!=?VER_NT_WORKSTATION?)??
  • ?????????{??
  • ????????????if?(?si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64?)??
  • ????????????{??
  • ????????????????if(?osvi.wSuiteMask?&?VER_SUITE_DATACENTER?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Datacenter?Edition?for?Itanium-based?Systems"?));??
  • ????????????????else?if(?osvi.wSuiteMask?&?VER_SUITE_ENTERPRISE?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Enterprise?Edition?for?Itanium-based?Systems"?));??
  • ????????????}??
  • ??
  • ????????????else?if?(?si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64?)??
  • ????????????{??
  • ????????????????if(?osvi.wSuiteMask?&?VER_SUITE_DATACENTER?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Datacenter?x64?Edition"?));??
  • ????????????????else?if(?osvi.wSuiteMask?&?VER_SUITE_ENTERPRISE?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Enterprise?x64?Edition"?));??
  • ????????????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Standard?x64?Edition"?));??
  • ????????????}??
  • ??
  • ????????????else??
  • ????????????{??
  • ????????????????if?(?osvi.wSuiteMask?&?VER_SUITE_COMPUTE_SERVER?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Compute?Cluster?Edition"?));??
  • ????????????????else?if(?osvi.wSuiteMask?&?VER_SUITE_DATACENTER?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Datacenter?Edition"?));??
  • ????????????????else?if(?osvi.wSuiteMask?&?VER_SUITE_ENTERPRISE?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Enterprise?Edition"?));??
  • ????????????????else?if?(?osvi.wSuiteMask?&?VER_SUITE_BLADE?)??
  • ???????????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Web?Edition"?));??
  • ????????????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Standard?Edition"?));??
  • ????????????}??
  • ?????????}??
  • ??????}??
  • ??
  • ??????if?(?osvi.dwMajorVersion?==?5?&&?osvi.dwMinorVersion?==?1?)??
  • ??????{??
  • ?????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?XP?"));??
  • ?????????if(?osvi.wSuiteMask?&?VER_SUITE_PERSONAL?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Home?Edition"?));??
  • ?????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Professional"?));??
  • ??????}??
  • ??
  • ??????if?(?osvi.dwMajorVersion?==?5?&&?osvi.dwMinorVersion?==?0?)??
  • ??????{??
  • ?????????StringCchCat(pszOS,?BUFSIZE,?TEXT("Windows?2000?"));??
  • ??
  • ?????????if?(?osvi.wProductType?==?VER_NT_WORKSTATION?)??
  • ?????????{??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Professional"?));??
  • ?????????}??
  • ?????????else???
  • ?????????{??
  • ????????????if(?osvi.wSuiteMask?&?VER_SUITE_DATACENTER?)??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Datacenter?Server"?));??
  • ????????????else?if(?osvi.wSuiteMask?&?VER_SUITE_ENTERPRISE?)??
  • ???????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Advanced?Server"?));??
  • ????????????else?StringCchCat(pszOS,?BUFSIZE,?TEXT(?"Server"?));??
  • ?????????}??
  • ??????}??
  • ??
  • ???????//?Include?service?pack?(if?any)?and?build?number.??
  • ??
  • ??????if(?_tcslen(osvi.szCSDVersion)?>?0?)??
  • ??????{??
  • ??????????StringCchCat(pszOS,?BUFSIZE,?TEXT("?")?);??
  • ??????????StringCchCat(pszOS,?BUFSIZE,?osvi.szCSDVersion);??
  • ??????}??
  • ??
  • ??????TCHAR?buf[80];??
  • ??
  • ??????StringCchPrintf(?buf,?80,?TEXT("?(build?%d)"),?osvi.dwBuildNumber);??
  • ??????StringCchCat(pszOS,?BUFSIZE,?buf);??
  • ??
  • ??????if?(?osvi.dwMajorVersion?>=?6?)??
  • ??????{??
  • ?????????if?(?si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(?",?64-bit"?));??
  • ?????????else?if?(si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL?)??
  • ????????????StringCchCat(pszOS,?BUFSIZE,?TEXT(",?32-bit"));??
  • ??????}??
  • ????????
  • ??????return?TRUE;???
  • ???}??
  • ??
  • ???else??
  • ???{????
  • ??????printf(?"This?sample?does?not?support?this?version?of?Windows.\n");??
  • ??????return?FALSE;??
  • ???}??
  • }??
  • ??
  • int?__cdecl?_tmain()??
  • {??
  • ????TCHAR?szOS[BUFSIZE];??
  • ??
  • ????if(?GetOSDisplayString(?szOS?)?)??
  • ????????_tprintf(?TEXT("\n%s\n"),?szOS?);??
  • }??
  • ?

    參照:

    Operating system Version number? dwMajorVersiondwMinorVersion ?Other
    Windows?8 6.2 6 2 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
    Windows Server?2012 6.2 6 2 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
    Windows?7 6.1 6 1 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
    Windows Server?2008?R2 6.1 6 1 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
    Windows Server?2008 6.0 6 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
    Windows?Vista 6.0 6 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
    Windows Server?2003?R2 5.2 5 2 GetSystemMetrics(SM_SERVERR2) != 0
    Windows Home Server 5.2 5 2 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
    Windows Server?2003 5.2 5 2 GetSystemMetrics(SM_SERVERR2) == 0
    Windows?XP Professional x64 Edition 5.2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
    Windows?XP 5.1 5 1 Not applicable
    Windows?2000 5.0 5 0 Not applicable

    ?

    好了,還有就是要提供出處了:

    總結

    以上是生活随笔為你收集整理的Windows 系统版本判断的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。