博客文章移至这里
win 10下通过GetVersionEx无法准确获取系统的版本号,获取后显示是win 8.1的版本号,下面给出正确获取系统版本号的方法,时间太久忘了参考自哪里了,以后找到会补上:
//-------------------------------------------------------------------------
// 函数 : GetNtVersionNumbers
// 功能 : 调用RtlGetNtVersionNumbers获取系统版本信息
// 返回值 : BOOL
// 附注 : 修复win8.1后无法正确获取版本号的问题
//-------------------------------------------------------------------------
BOOL GetNtVersionNumbers(LPOSVERSIONINFO lpVersionInformation)
{
BOOL bRet= FALSE;
if(lpVersionInformation == NULL)
{
return bRet;
}
bRet = GetVersionEx(lpVersionInformation);
HMODULE hModNtdll= NULL;
if (hModNtdll= ::LoadLibrary(_T("ntdll.dll")))
{
typedef void (WINAPI *pfRTLGETNTVERSIONNUMBERS)(DWORD*,DWORD*, DWORD*);
pfRTLGETNTVERSIONNUMBERS pfRtlGetNtVersionNumbers;
pfRtlGetNtVersionNumbers = (pfRTLGETNTVERSIONNUMBERS)::GetProcAddress(hModNtdll, "RtlGetNtVersionNumbers");
if (pfRtlGetNtVersionNumbers)
{
pfRtlGetNtVersionNumbers(&lpVersionInformation->dwMajorVersion,
&lpVersionInformation->dwMinorVersion,&lpVersionInformation->dwBuildNumber);
lpVersionInformation->dwBuildNumber&= 0x0ffff;
bRet = TRUE;
}
::FreeLibrary(hModNtdll);
hModNtdll = NULL;
}
return bRet;
}