MAPI_E_NOT_FOUND в OpenMsgStore - PullRequest
       11

MAPI_E_NOT_FOUND в OpenMsgStore

0 голосов
/ 19 марта 2010

Я пытаюсь открыть хранилище сообщений пользователя, используя MAPI. Странно то, что когда я запускаю это консольное приложение, когда я вошел в систему с пользователем, все работает нормально.

Но когда я запускаю это как службу Windows, я получаю MAPI_E_NOT_FOUND при попытке открыть MessageStore.

Я уже настроил службу для работы от имени пользователя.

Кажется, что MapiLogonEx работает нормально, и GetMsgStoreTables также дает мне правильные результаты (я подтвердил, что EntryID для MessageStore верен).

Вот мой код:

LPMAPITABLE     pStoresTbl = NULL;
m_lpMAPISession->GetMsgStoresTable(0, &pStoresTbl);

// Query Collumns
LPSPropTagArray pTags = NULL;
LPSRowSet pRows = NULL;
pStoresTbl->SeekRow(BOOKMARK_BEGINNING,0,NULL);
pStoresTbl->QueryRows(
                LONG_MAX,
                NULL,
                &pRows);


LPSBinary lpEntryID = NULL; 
ULONG iprops;
for (iprops = 0; iprops < pRows->aRow[0].cValues; iprops++)
{               
    SPropValue sProp = pRows->aRow[0].lpProps[iprops];
    if (PROP_ID(sProp.ulPropTag) == PROP_ID(PR_ENTRYID))
    {
        lpEntryID = &sProp.Value.bin;
        break;
    }
}


lpMDB = NULL;
HRESULT hres = m_lpMAPISession->OpenMsgStore(NULL,
    lpEntryID->cb,
    (LPENTRYID) lpEntryID->lpb,
    NULL,
        MDB_NO_DIALOG |
        MDB_NO_MAIL |       // spooler not notified of our presence
        MDB_TEMPORARY |  // message store not added to MAPI profile
        MAPI_BEST_ACCESS,
    &lpMDB);    

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Передаете ли вы флаг MAPI_NT_SERVICE в структуре MAPIINIT_0 при вызове MAPIInitialize ? Я никогда не не передавал его при работе в службе, поэтому я не совсем уверен, что произойдет, если вы этого не сделаете. Документы MSDN говорят, что это необходимо.

MAPI_NT_SERVICE

Звонящий работает как служба Windows. Вызывающие которые не работают как Windows сервис не должен устанавливать этот флаг; абоненты, которые работают как сервис должен установить этот флаг.

1 голос
/ 23 марта 2010

Это профиль Exchange? Вы уверены, что открываете основной почтовый ящик, а не магазин PF?

Дмитрий Стребленченко (MVP) http://www.dimastr.com/ OutlookSpy - Outlook, CDO и MAPI Developer Tool

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...