Microsoft Outlook에서 Mapisvc.inf 파일의 올바른 경로를 찾는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 229700 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

Microsoft Outlook Mapisvc.inf 파일의 경로를 찾을 수 있도록 도와주는 Mapistub.dll 파일의 FGetComponentPath 함수를 노출합니다. 이 문서의 "추가 정보" 절에서 코드 샘플을 사용하여 Mapisvc.Inf 파일에 대한 경로를 찾는 방법을 설명합니다.

Microsoft Outlook 2000 전에 Mapisvc.inf 파일의 항상 시스템 디렉터리에 Win32 API GetSystemDirectory 함수에 의해 반환된 설치되었습니다.

추가 정보

참고 다음 코드 샘플에서는 모든 이전 버전의 Outlook과 함께 이전 버전과의 호환 것입니다. 다음 코드 샘플에서는 Mapisvc.inf 파일 또는 시스템 디렉터리 아래에 있는지 Mapisvc.inf 파일의 경로를 찾습니다.
typedef BOOL (STDAPICALLTYPE FGETCOMPONENTPATH)
(LPSTR szComponent,
 LPSTR szQualifier,
 LPSTR szDllPath,
 DWORD cchBufferSize,
 BOOL fInstall);
typedef FGETCOMPONENTPATH FAR * LPFGETCOMPONENTPATH;    

/////////////////////////////////////////////////////////////////////////////// 
// Function name    : InitMAPIDir
// Description      : For Outlook 2000 compliance. This will get the correct path to the
//                  : MAPISVC.INF file.
// Return type      : void 
// Argument         : LPSTR szMAPIDir - Buffer to hold the path to the MAPISVC file.
//                  : ULONG cchINIFileName - size of szMAPIDir
void InitMAPIDir(LPSTR szINIFileName, ULONG cchINIFileName)
{
    UINT uiRet = 0;
    CHAR szSystemDir[MAX_PATH+1] = {0};

    // Get the system directory path
    // (mapistub.dll and mapi32.dll reside here)
    uiRet = GetSystemDirectoryA(szSystemDir, MAX_PATH);
    if(uiRet > 0)
    {
        HRESULT hRes = S_OK;
        CHAR szDLLPath[MAX_PATH+1] = {0};

        hRes = StringCchPrintfA(szDLLPath, MAX_PATH+1, "%s\\%s", 
            szSystemDir, "mapistub.dll");
        if(SUCCEEDED(hRes))
        {
            LPFGETCOMPONENTPATH pfnFGetComponentPath = NULL;

            HMODULE hmodStub = 0;
            HMODULE hmodMapi32 = 0;

            // Load mapistub.dll
            hmodStub = LoadLibraryA(szDLLPath);
            if(hmodStub)
            {   
                // Get the address of FGetComponentPath from the mapistub
                pfnFGetComponentPath = (LPFGETCOMPONENTPATH)GetProcAddress(
                    hmodStub, "FGetComponentPath");
            }

            // If we didn't get the address of FGetComponentPath
            // try mapi32.dll
            if(!pfnFGetComponentPath)
            {
                hRes = StringCchPrintfA(szDLLPath, MAX_PATH+1, "%s\\%s", 
                    szSystemDir, "mapi32.dll");
                if(SUCCEEDED(hRes))
                {
                    // Load mapi32.dll
                    hmodMapi32 = LoadLibraryA(szDLLPath);
                    if(hmodMapi32)
                    {
                        // Get the address of FGetComponentPath from mapi32
                        pfnFGetComponentPath = (LPFGETCOMPONENTPATH)GetProcAddress(
                            hmodMapi32, "FGetComponentPath");
                    }
                }
            }

            BOOL bRet = FALSE;

            if(pfnFGetComponentPath)
            {
                // Now that we have the address of FGetComponentPath
                // Let's call it with the GUID for mapisvc.inf
                bRet = pfnFGetComponentPath(
                    "{473FF9A0-D659-11D1-A4B2-006008AF820E}",
                    NULL, szINIFileName, cchINIFileName, TRUE); 
            }

            // If FGetComponentPath returns FALSE or if
            // it returned nothing, or if we never found an
            // address of FGetComponentPath, then
            // just default to the system directory
            if(!bRet || szINIFileName[0] == '\0')
            {
                hRes = StringCchPrintfA(szINIFileName, cchINIFileName,
                    "%s\\%s", szSystemDir, "mapisvc.inf");
            }

            if(hmodMapi32)
                FreeLibrary(hmodMapi32);

            if(hmodStub)
                FreeLibrary(hmodStub);
        }
    }
}

속성

기술 자료: 229700 - 마지막 검토: 2005년 8월 25일 목요일 - 수정: 5.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000
  • Microsoft Messaging Application Programming Interface
키워드:?
kbmt kbfaq kbhowto kbmsg KB229700 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com