获取Windows系统版本号

来源:互联网 发布:愚公移山源码 编辑:程序博客网 时间:2024/05/21 17:37

GetVersionEx function

最好不要用这个API因为微软已经抛弃掉了,原话是这么说的:

[GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper functions]

也就是从Win8.1开始不支持了,无论是Win8.1还是Win10,调用这个API返回的版本号是错误的。可以使用清单来解决这个问题,具体参考:https://msdn.microsoft.com/zh-cn/library/windows/desktop/dn481241(v=vs.85).aspx

RtlGetNtVersionNumbers

首先声明,这并不是一个文档化的函数,不包含在任何头文件中。需要从动态链接库ntdll.dll中加载。

下面给出实例:

bool getSysInfo(DWORD *dwMajorVersion,DWORD *dwMinorVersion,DWORD *dwBuildNumber) { //主版本号、次版本号、内部版本号HMODULE hm;if (hm = LoadLibrary(L"ntdll.dll")) {typedef void (WINAPI *getver)(DWORD*, DWORD*, DWORD*);getver gv = (getver)GetProcAddress(hm, "RtlGetNtVersionNumbers");if (gv){DWORD test;gv(dwMajorVersion, dwMinorVersion, dwBuildNumber);*dwBuildNumber &= 0xffff;//内部版本号应该要取低16位FreeLibrary(hm);return TRUE;}else { GetErrorMessage(GetLastError(),0); }FreeLibrary(hm);}return FALSE;}

运行结果:



原创粉丝点击