获取Windows操作系统真实版本

·

无视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;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注