MAPI C++ Enumerate Profiles
   A windows computer will in most probability be installed with some profiles for connecting to the Microsoft Exchange Servers. This profile will contain details of the Microsoft Exchange Server name, e-mail address etc.,

   This article MAPI C++ Enumerating Profiles explains how to extract the profiles installed in the local computer. This needs the API MAPIAdminProfiles to get the pointer to the MAPI Profile of type PROFADMIN Manager installed in the system. This interface will be used to call GetProfileTable function, which in turn returns the profile names installed in the system.

MAPI C++ Enumerating Profiles - Sample Code:


//EnumProfiles.cpp
#include <edk.h>
#include <string.h>


#define MAX_SIZE 256

void main()
{

HRESULT hr;
LPMAPITABLE pTable = NULL;
LPSRowSet pRows = NULL;
bool found=false;
SizedSPropTagArray(1, Columns) ={1, {PR_DISPLAY_NAME}};
LPPROFADMIN pProfAdmin = NULL; // Pointer to IProfAdmin object

//Initialize the MAPI C++ libraries
hr = MAPIInitialize (NULL);
char l_ProfileName[MAX_SIZE];

//Get the pointer to MAPI C++ PROFADMIN interface
hr = MAPIAdminProfiles(0, &pProfAdmin);
if (!FAILED(hr))
{
   // Get the ProfileTable which has all profiles
   hr = pProfAdmin->GetProfileTable(0, &pTable);
   if (FAILED(hr))
   {
       //Error initializing profile table
   }
}

//Call the MAPI C++ HrQueryrows API for getting all the data inside the profile table
hr = HrQueryAllRows(pTable, //pointer to table of pointers
(LPSPropTagArray) &Columns, //list of columns we will get
NULL, //filter NULL. We need all rows
NULL, //we don?t need any sorting here
0, //retrieve all rows that match
&pRows); //pointer to resulting table


if (!FAILED(hr) && pRows->cRows>0) //result of HrQueryAllRows
{
   found=true;
   for(int i=0;i<pRows->cRows;i++)
   {
      strcpy(l_ProfileName, pRows->aRow[i].lpProps->Value.lpszA);
      printf("%s\n",l_ProfileName);
   }
}

//Cleanup of all MAPI C++ Interfaces
if (pRows) FreeProws(pRows);
if (pTable) pTable->Release();
if (pProfAdmin) pProfAdmin->Release();
MAPIUninitialize();

}


   The above program is a console application. This prints all the profiles present in the machine.

C++ MAPI Public Folder - Libraries Required:

   Add these libraries in the project settings--> Link --> Object/library modules.
   kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Edkguid.lib msvcrt.lib Edkdebug.lib mapi32.lib

   Also in the Project Settings --> Link --> Category --> Input -->Ignore Libraries , add libc.lib and libcd.lib.

When the program is compiled, if the " LINK : fatal error LNK1104: cannot open the file "mfc40.lib" " is seen, then this problem has to be resolved by Recompiling the MAPI Exchange Development Kit.

Close    To Top
  • Prev Article-Programming:
  • Next Article-Programming:
  • Now: Tutorial for Web and Software Design > Programming > win32 > Programming Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction