今天逛论坛看到一个好玩的帖子,就是利用一个API,来获取系统的版本号,利用此API可以兼容各个系统,未我们编写程序获取系统版本提供了很大的便利,该API是微软未公布的API,以前有人用过,但是知道的人不多!
于是我利用工具查看了ntdll.dll导出函数,发现确实有这个API!
利用的是:RtlGetNtVersionNumbers这个API!
我查询了下本机的系统版本号:
我用C语言实现了这个功能:
示例代码如下:
#include <stdio.h>#include <windows.h>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 ",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
联系客服