HOWTO: Open the Global Profile Section
ID: Q188482
|
The information in this article applies to:
-
Exchange Development Kit (EDK), versions 4.0, 5.0
-
Extended Messaging Application Programming Interface (MAPI), version 1.0
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 <objbase.h>
#include <mapix.h>
#include <mapidefs.h>
#include <mapiguid.h>
#include <edk.h>
#include <edkmdb.h>
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 (
"<profile name>",
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 : kbAPI kbEDK kbMsg kbMAPI100
Version : WINDOWS:1.0,4.0,5.0
Platform : WINDOWS
Issue type : kbhowto