Microsoft KB Archive/188482

= How To Open the Global Profile Section =

Article ID: 188482

Article Last Modified on 8/18/2005

-

APPLIES TO


 * Microsoft Exchange Development Kit 5.5
 * Microsoft Exchange Development Kit 5.5
 * Microsoft Messaging Application Programming Interface

-



This article was previously published under Q188482



SUMMARY
This article provides code that demonstrates how to open the Global Profile Section and retrieve one of the properties that exist in this section. It also provides a comprehensive list of properties that exist in the global profile section. The key to this is to request the profile section that has pbGlobalProfileSectionGuid for its unique identifier. This is a constant that is defined in the Edkmdb.h file.



MORE INFORMATION
It may be necessary to retrieve or modify the values of properties that exist in the Global Profile Section of a Messaging Application Programming Interface (MAPI) profile. A global profile section exists for each profile that uses the Microsoft Exchange Messaging Service. This "global section" is used to store common data, plus individual sections for the transport provider, one store provider for the user, one store provider for the public store, and one store provider for each additional mailbox to which the user has delegate access.

The following code is an example of how to open the Global Profile Section of a MAPI profile and how to extract the PR_PROFILE_HOME_SERVER property:

Sample Code
#include   #include    #include    #include    #include    #include 

HRESULT GetServerName {    HRESULT hRes = S_OK;   // HRESULT returned by this method LPPROFADMIN pAdminProfiles = NULL; // Pointer to IProfAdmin object LPSERVICEADMIN pSvcAdmin = NULL; // Pointer to IServiceAdmin object LPPROFSECT pGlobalProfSect = NULL; // Pointer to IProfSect object LPSPropValue pProps = NULL; // Pointer to PropValue // PR_PROFILE_HOME_SERVER char szServerName[256]; // String that will contain the server name // If your app doesn't already initialize the MAPI subsystem, // do it now. if ( FAILED ( hRes = MAPIInitialize ( NULL ) ) ) return hRes;

// Get a Profile admin object if ( FAILED ( hRes = MAPIAdminProfiles ( 0L, &pAdminProfiles ) ) ) goto CleanUp;

// Get a ServiceAdmin object if ( FAILED ( hRes = pAdminProfiles -> AdminServices (                                          " ",                                           NULL,                                           0L,  // Your app's window handle                                           0L,                                           &pSvcAdmin ) ) ) goto CleanUp;

// Get the Global Profile Section by calling // IServiceAdmin::OpenProfileSection use pbGlobalProfileSectionGuid // defined in EDKMDB.H as the entry ID to request // The default return is an IProfSect interface. if ( FAILED ( hRes = pSvcAdmin -> OpenProfileSection (                                 (LPMAPIUID)pbGlobalProfileSectionGuid,                                  NULL,                                  0L,                                  &pGlobalProfSect ) ) ) goto CleanUp;

// Call HrGetOneProp to get PR_PROFILE_HOME_SERVER if ( FAILED ( hRes = HrGetOneProp ( pGlobalProfSect,                                         PR_PROFILE_HOME_SERVER,                                          &pProps ) ) ) goto CleanUp;

// Set Server name pointer to string equal to value returned from // HrGetOneProp strcpy ( szServerName, "PR_PROFILE_HOME_SERVER == " ); strcat ( szServerName, pProps -> Value.lpszA );

// Replace window handle param with your application's window handle MessageBox ( 0L, szServerName, "Exchange Server Name", MB_OK );

CleanUp:

// Free all memory allocated by any MAPI calls

if ( NULL != pAdminProfiles ) pAdminProfiles -> Release ;

if ( NULL != pSvcAdmin ) pSvcAdmin -> Release ;

if ( NULL != pGlobalProfSect ) pGlobalProfSect -> Release ;

if ( NULL != pProps ) MAPIFreeBuffer ( &pProps );

pSvcAdmin = NULL; pGlobalProfSect = NULL; pProps = NULL; pAdminProfiles = NULL;

// Return the HRESULT to the calling function return hRes; } NOTE: Be sure to include the following libraries in the link process:

Kernel32.lib, User32.lib, Msvcrt.lib, Mapi32.lib, Edkguid.lib, Edkutils.lib, Edkmapi.lib, Edkdebug.lib.

You also need to check the option to ignore default libraries in the general project settings of the link process. To do this, choose Settings from the Project menu, click the Link tab, set the category box to General and than select the desired option.

The following is a list of properties that exist in the Global Profile Section:
 * PR_PROFILE_VERSION
 * PR_PROFILE_CONFIG_FLAGS
 * PR_PROFILE_HOME_SERVER
 * PR_PROFILE_HOME_SERVER_DN
 * PR_PROFILE_HOME_SERVER_ADDRS
 * PR_PROFILE_USER
 * PR_PROFILE_CONNECT_FLAGS
 * PR_PROFILE_TRANSPORT_FLAGS
 * PR_PROFILE_UI_STATE
 * PR_PROFILE_UNRESOLVED_NAME
 * PR_PROFILE_UNRESOLVED_SERVER
 * PR_PROFILE_BINDING_ORDER
 * PR_PROFILE_MAX_RESTRICT
 * PR_PROFILE_AB_FILES_PATH
 * PR_PROFILE_OFFLINE_STORE_PATH
 * PR_PROFILE_OFFLINE_INFO
 * PR_PROFILE_ADDR_INFO
 * PR_PROFILE_OPTIONS_DATA
 * PR_PROFILE_SECURE_MAILBOX
 * PR_DISABLE_WINSOCK

Please read the Platform Software Developers Kit for more information on these and other properties.

Additional query words: kbDSupport kbMsg kbEDK kbEDK400 kbEDK500 kbMAPI100 kbMAPI EDKAPI EMAPI

Keywords: kbhowto kbapi kbmsg KB188482

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.