教大家利用微軟未公開的API,獲取系統版本!(附編程代碼)

今天逛論壇看到一個好玩的帖子,就是利用一個API,來獲取系統的版本號,利用此API可以兼容各個系統,未我們編寫程序獲取系統版本提供了很大的便利,該API是微軟未公佈的API,以前有人用過,但是知道的人不多!


於是我利用工具查看了ntdll.dll導出函數,發現確實有這個API!

利用的是:RtlGetNtVersionNumbers 這個API!

我查詢了下本機的系統版本號:

教大家利用微軟未公開的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


有喜歡編程技術的可以點擊我的頭條主頁加群交流哦!


分享到:


相關文章: