Microsoft KB Archive/180597

= How To Get the Name of the Profile you Logged On With =

Article ID: 180597

Article Last Modified on 8/18/2005

-

APPLIES TO


 * Microsoft Messaging Application Programming Interface

-



This article was previously published under Q180597



SUMMARY
This article describes the process of programmatically determining what profile was used to log on to the current session.



MORE INFORMATION
To find out which profile was used to start the current session, follow these steps:
 * 1) Call IMAPISession::GetStatusTable to retrieve a table with information about all of the MAPI resources in the session. This table contains information about the session including the current profile name. The following steps outline how to get the profile name out of the table.
 * 2) Call IMAPITable::SetColumns to reduce the table to only the PR_DISPLAY_NAME and PR_RESOURCE_TYPE columns.
 * 3) Next, set up a restriction to find the entry in the table where PR_RESOURCE_TYPE equals MAPI_SUBSYSTEM. Use IMAPITable::Restrict to apply this restriction to the table.
 * 4) Call IMAPITable::QueryRows to retrieve the row in the table that contains the information about the current profile.
 * 5) The row returned from QueryRows contains the name of the current profile.

Here is a code sample that demonstrates the process above: // Note: Mapi32.lib is required to successfully compile and link // the following code. #include   #include    #include 

HRESULT        hr = S_OK; LPMAPISESSION  lpSession = NULL; LPMAPITABLE    lpStatusTable = NULL;

SRestriction   sres; SPropValue     spvResType; LPSRowSet      pRows = NULL; LPTSTR         lpszProfileName = NULL;

SizedSPropTagArray(2, Columns) = {     2, PR_DISPLAY_NAME, PR_RESOURCE_TYPE };

hr = MAPIInitialize(NULL);

// Log on to the Extended MAPI session. hr = MAPILogonEx((ULONG)GetActiveWindow,           NULL,            NULL,            MAPI_LOGON_UI | MAPI_NEW_SESSION,            &lpSession); hr = lpSession->GetStatusTable(NULL, &lpStatusTable); hr = lpStatusTable->SetColumns((LPSPropTagArray)&Columns, NULL);

spvResType.ulPropTag = PR_RESOURCE_TYPE; spvResType.Value.ul = MAPI_SUBSYSTEM;

sres.rt = RES_PROPERTY; sres.res.resProperty.relop = RELOP_EQ; sres.res.resProperty.ulPropTag = PR_RESOURCE_TYPE; sres.res.resProperty.lpProp = &spvResType;

hr = lpStatusTable->Restrict(&sres, TBL_ASYNC);

hr = lpStatusTable->FindRow(&sres, BOOKMARK_BEGINNING, 0);

// We have a match. hr = lpStatusTable->QueryRows(1,0,&pRows);

if (SUCCEEDED(hr)) {     lpszProfileName = pRows->aRow[0].lpProps[0].Value.lpszA; printf("You logged onto profile \"%s\"\n", lpszProfileName); }

Additional query words: Default Profile MAPILogonEx Session StatusTable

Keywords: kbhowto kbmsg KB180597

-

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

© Microsoft Corporation. All rights reserved.