我想檢查Windows操作系統的版本是否爲Windows 2008或更高版本。我正在使用下面的一段代碼,它在我的環境中工作得很好,但有人(客戶)已經報告說它不適用於其生產操作系統環境,但適用於具有Windows 2008 R2 SP1的其他系統。這不起作用意味着即使在操作系統是Windows 2008 R2 SP1的情況下它也會返回錯誤。代碼有什麼問題?在Windows 2008 R2 SP1上使用GetVersionEx時行爲不正確
bool CheckIfOperatingISWindowsServer2K8orAbove()
{
OSVERSIONINFOEX winOSInfo;
winOSInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
GetVersionEx(&winOSInfo);
//Check if windows version is 6 (i.e longhorn) and its windows server
if(winOSInfo.dwPlatformId==VER_PLATFORM_WIN32_NT && winOSInfo.dwMajorVersion == 6 && winOSInfo.wProductType == VER_NT_SERVER)
{
if (winOSInfo.dwMinorVersion == 0 || winOSInfo.dwMinorVersion == 1)
return true;
}
return false;
}
我想的唯一缺少的一部分未被初始化winOSInfo使用ZeroMemory(& winfo,的sizeof(OSVERSIONINFOEX))爲值0;
您的意見是?你認爲不初始化OSVERSIONINFOEX結構會導致這種問題嗎?
在此先感謝。
它工作得很好。對於域控制器,wProductType返回爲VER_NT_DOMAIN_CONTROLLER。謝謝我現在解決了這個問題。 – Rahul 2011-12-14 06:33:22