即使在WinXP SP2中,使用MFC / C ++代码检测WinXP SP3也会返回true

时间:2016-05-20 16:28:32

标签: c++ windows winapi mfc operating-system

在Windows 7 64bit下,我使用兼容模式“Windows XP Service Pack 2”运行我的C ++应用程序,以下检测WinXP SP3的代码返回“TRUE”,而不应该。这里看来有什么不对?

BOOL CUtils::Is_WinXP_SP3_or_Later() {

   OSVERSIONINFOEX osvi;
   DWORDLONG dwlConditionMask = 0;
   int op=VER_GREATER_EQUAL;

   // Initialize the OSVERSIONINFOEX structure.

   ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
   osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
   osvi.dwMajorVersion = 5;
   osvi.dwMinorVersion = 1;
   osvi.wServicePackMajor = 3;
   osvi.wServicePackMinor = 0;
   osvi.dwBuildNumber = 2600;

   // Initialize the condition mask.

   VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
   VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
   VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
   VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );
   //VER_SET_CONDITION( dwlConditionMask, VER_BUILDNUMBER, op );

   // Perform the test.

   return VerifyVersionInfo(
      &osvi, 
      VER_MAJORVERSION | VER_MINORVERSION | 
      VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
      dwlConditionMask);
}

0 个答案:

没有答案