分享

教大家利用微软未公开的API,获取系统版本!(附编程代码)

 天易书馆975 2018-04-12

今天逛论坛看到一个好玩的帖子,就是利用一个API,来获取系统的版本号,利用此API可以兼容各个系统,未我们编写程序获取系统版本提供了很大的便利,该API是微软未公布的API,以前有人用过,但是知道的人不多!

于是我利用工具查看了ntdll.dll导出函数,发现确实有这个API!

利用的是:RtlGetNtVersionNumbers这个API!

我查询了下本机的系统版本号:

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多