无视Windows兼容模式获取Windows操作系统真实版本。
bool GetWindowsVersion(DWORD *wMajorVersion, DWORD *wMinorVersion, DWORD *wServicePackMajor)
{
RTL_OSVERSIONINFOEXW verInfo;
RtlSecureZeroMemory(&verInfo, sizeof(verInfo));
verInfo.dwOSVersionInfoSize = sizeof(verInfo);
typedef NTSTATUS(NTAPI* fnRtlGetVersion)(PRTL_OSVERSIONINFOW lpVersionInformation);
fnRtlGetVersion RtlGetVersion = (fnRtlGetVersion)GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlGetVersion");
if (RtlGetVersion != 0 && RtlGetVersion((PRTL_OSVERSIONINFOW)&verInfo) == 0)
{
if (wMajorVersion)
*wMajorVersion = verInfo.dwMajorVersion;
if (wMinorVersion)
*wMinorVersion = verInfo.dwMinorVersion;
if (wServicePackMajor)
*wServicePackMajor = verInfo.wServicePackMajor;
return true;
}
return false;
}
发表回复