RtlGetVersion这个函数是Windows XP以上才支持的。如果想写支持Windows NT 4.0或Windows 2000的程序,可以这样写:
<code class="lang-cpp">BOOL GetVersionEx2(LPOSVERSIONINFOW lpVersionInformation)
{
HMODULE hNtDll = GetModuleHandleW(L"NTDLL"); // 获取ntdll.dll的句柄
typedef NTSTATUS (NTAPI*tRtlGetVersion)(PRTL_OSVERSIONINFOW povi); // RtlGetVersion的原型
tRtlGetVersion pRtlGetVersion = NULL;
if (hNtDll)
{
pRtlGetVersion = (tRtlGetVersion)GetProcAddress(hNtDll, "RtlGetVersion"); // 获取RtlGetVersion地址
}
if (pRtlGetVersion)
{
return pRtlGetVersion((PRTL_OSVERSIONINFOW)lpVersionInformation) >= 0; // 调用RtlGetVersion
}
else
{
return GetVersionExW(lpVersionInformation); // Windows XP以下版本
}
}</code>