博客文章移至這裏
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;
}