설치된 아웃룩  버전 체크 방법입니다.

실행파일의 파일 버전을 통해서 체크합니다

 

#pragma comment(lib,"version.lib")

 

// 레지스트리 경로

#define REG_OUTLOOK_PATH L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\OUTLOOK.EXE"

 

// 아웃룩 경로 가져오기

CString CRegistry::GetOutlookPath()
{
 HKEY hKey;  
 BOOL bRet = TRUE;
 TCHAR pzValue[MAX_PATH] = {0};
 DWORD dwSize = sizeof(pzValue); 
 CString SubKey = REG_OUTLOOK_PATH;
 CString path = L"";

 DWORD nVal = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, SubKey, 0, KEY_READ, &hKey);
 if( nVal == ERROR_SUCCESS)
 {
  if (RegQueryValueEx(hKey, TEXT("Path"), 0 , NULL, (LPBYTE)&pzValue, &dwSize) == ERROR_SUCCESS)
  {
   path = pzValue;
  }
  ::RegCloseKey(hKey);  
 }
 else
 {  
  ::RegCloseKey(hKey);
 }

 return path;
}

 

// 아웃룩 버정 가져오기

WORD CUtility::GetOutlookVersion()
{
 CRegistry reg;
 CString outlook = reg.GetOutlookPath(); // 레지스트리에서 아웃룩 경로를 가져온다.
 WORD majorVer, minorVer, buildNum, revisionNum;
 majorVer = -1;

 if( outlook != L"")
 {
  CString path = outlook + L"OUTLOOK.EXE";

  DWORD infoSize = 0;
  

  // 파일로부터 버전정보데이터의 크기가 얼마인지를 구합니다.
  infoSize = GetFileVersionInfoSize(path, 0);
  if(infoSize==0) return -1;
 
  // 버퍼할당
  char* buffer = NULL;
  buffer = new char[infoSize];
  if(buffer)
  {
   // 버전정보데이터를 가져옵니다.
   if(GetFileVersionInfo(path,0,infoSize, buffer)!=0)
   {
    VS_FIXEDFILEINFO* pFineInfo = NULL;
                UINT bufLen = 0;
               // buffer로 부터 VS_FIXEDFILEINFO 정보를 가져옵니다.
               if(VerQueryValue(buffer, L"\\",(LPVOID*)&pFineInfo, &bufLen) !=0)
               {  
                    majorVer = HIWORD(pFineInfo->dwFileVersionMS);
                    minorVer = LOWORD(pFineInfo->dwFileVersionMS);
                    buildNum = HIWORD(pFineInfo->dwFileVersionLS);
                    revisionNum = LOWORD(pFineInfo->dwFileVersionLS);                   
                }
           }
   delete[] buffer;
   }
  return majorVer;  
 }
 else
 {
  return -1; // 미설치
 }
}

 

리턴되는 값에 따라서,

 

Office 97   -  7.0
Office 98   -  8.0
Office 2000 -  9.0
Office XP   - 10.0
Office 2003 - 11.0

Office 2007 - 12.0
Office 2010 - 14.0 (sic!)
Office 2013 - 15.0