今天逛論壇看到一個好玩的帖子,就是利用一個API,來獲取系統的版本號,利用此API可以兼容各個系統,未我們編寫程序獲取系統版本提供了很大的便利,該API是微軟未公佈的API,以前有人用過,但是知道的人不多!
於是我利用工具查看了ntdll.dll導出函數,發現確實有這個API!
利用的是:RtlGetNtVersionNumbers 這個API!
我查詢了下本機的系統版本號:
我用C語言實現了這個功能:
示例代碼如下:
#include#include typedef void (__stdcall *NTPROC)(DWORD*,DWORD*,DWORD*);void GetWinVer(){ HINSTANCE hinst = LoadLibrary("ntdll.dll"); DWORD dwMajor,dwMinor,dwBuildNumber; NTPROC proc = (NTPROC)GetProcAddress(hinst,"RtlGetNtVersionNumbers"); proc(&dwMajor,&dwMinor,&dwBuildNumber); dwBuildNumber&=0xffff; printf("系統版本:%d.%d.%d\n",dwMajor,dwMinor,dwBuildNumber); FreeLibrary(hinst);}void main(void){ GetWinVer();}
輸入結果:
系統版本:10.0.16299
另附上版本對照表:
' 版本區分:“主版本”.“次版本”
' 10.0 - Win10 / Windows Server 2016
' 6.3 - Win8.1 / Windows Server 2012 R2
' 6.2 - Win8 / Windows Server 2012
' 6.1 - Win7 / Windows Server 2008 R2
' 6.0 - Vista / Windows Server 2008
' 5.2 - Windows Server 2003 R2 / Windows Server 2003 / Windows Home Server / WinXP x64
' 5.1 - Windows XP
' 5.0 - Windows 2000
有喜歡編程技術的可以點擊我的頭條主頁加群交流哦!
閱讀更多 技術小成 的文章