ProfileProp – Examine Profile Properties


I’ve had some requests lately to write a MAPI sample that shows how to access profile properties programmatically, so I threw this together from some bits and pieces of code I had laying around.

I had the chance to incorporate a few cool features in this code:

  1. MultiEx: It loops over the profile services looking for services of type MSEMS, grabbing the PR_EMSMDB_SECTION_UID property for each. It uses this to open the global profile section for each account.
  2. MAPI Stub Library: This sample uses the MAPI Stub Library, demonstrating yet again how easy this library is to incorporate. The version I’m using here is cribbed from the MFCMAPI source.
  3. The profile name is optional: You can specify any profile you want, or if you leave it out, it will look up and use the default profile.
  4. Deletion: If you have a property you want to delete, you can pass the –d switch. Be careful with this! Deleting random properties could corrupt your profile and leave you in a state where the only fix is to recreate the profile or restore from backup. Make sure you know what your doing before you delete a property!
  5. Backup: If you do use the deletion switch, this sample will create a backup of the profile using CopyProfile.

Here’s the help, showing how to use the sample:

C:\>ProfileProp.exe -?
ProfileProp – Profile Property Examination Tool
   Locates and optionally deletes a property from the Exchange Global Profile section of a profile.
   In the case of multiple Exchange accounts, will locate the property for each account.

Usage:  ProfileProp [-?] [-p profile] [-d] <property tag number>

Options:
        -p profile Name of new profile to examine.
                       Default profile will be used if -p is not used.

        -d         Delete the property (otherwise just locate it)

        -?         Displays this usage information.

Suppose you wanted to use this to output the display name of each account in the profile. You could do this (note that 0x3001001F is PR_DISPLAY_NAME):

C:\>ProfileProp.exe 0x3001001F
Profile Property Tool
Profile: Outlook
Property: 0x3001001F

Examining account Microsoft Exchange
        Located property
                Property tag: 0x3001001F
                Value: sgriffin@example.com
Examining account Microsoft Exchange
        Located property
                Property tag: 0x3001001F
                Value: sgriffin@example.example.com

I haven’t implemented property name lookup like in MrMAPI, and I probably won’t.

You can get the sample here.

Enjoy!

Comments (1)

  1. Dmitry Streblechenko says:

    Steve,

    the link to MAPI Sub Library actually points to PidTagExchangeProfileSectionId.

Skip to main content