Default PST File from registry info

A

Alpha

Lately I've been trying to make a little software tool that would back
up several information, on wich PST files are included.

I know I may find cases on which there could be more than one profile
and each of them having one or more .pst files.

I searched everywhere but couldn't find some certain info on where the
information about .pst files is stored.

However, I found this vague information:

There's a registry key in HKCU\Software\Microsoft\Windows Messaging
Subsystem\Profiles

There is a key value named "Default Profile" with the name of the
default profile (d'oh!) and also there's subkeys to each of the
profiles.

So, in HKCU\Software\Microsoft\Windows Messaging
Subsystem\Profiles\<profileName>\ I would find some info on the profile
settings. There's a subkey named 9207f3e0a3b11019908b08002b2a56c2, in
which more CLSIDs are named, each one of them with different info (such
as Personal Folders, Address Files, Account Info and such).

But how do I know what's the exact name on which the location of the
pst file is/are located? I could find that one on my PC, but nothing
guarantees me it'll be the same on another PC.

Thanks in advance, and please forgive me for my poor english.-
 
S

Sue Mosher [MVP-Outlook]

But how do I know what's the exact name on which the location of the
pst file is/are located?

There isn't one. The key will vary from profile to profile.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
S

Scot T Brennecke

In which language are you writing your "little software tool"? These properties are most accessible
to extended MAPI, for which the API is designed for C/C++. If you are interested in how to use
extended MAPI to access this data, let me know.
 
A

Alpha

It would not be best practice to hard code any location in an application

Thanks, and that's the very reason I'm trying to find out how do the
keys name get generated or how do they relate to the profile itself
(maybe it gets generated from the profile name, maybe from the date it
was created, or maybe it just random).

Also, forgive me for not mentioning: I'm writing this in Excel's VBA,
but I managed to get to read the registry as any other application
would.

So, Mr. Brennecke, if I could use MAPI APIs (that makes a rhyme) and
that would get me to the profile info I need, it would be great. Thank
you for any info you can give me about it (or at least, where to start
from).
 
A

Alpha

Well, I finally found the way to do it. I'll post the solution as for
anyone in the future having the same trouble.

For each profile, a key is created in
HKCU\Software\Microsoft\Windows Messaging Subsystem\Profiles

Let's say our profile was named "Test profile", so, the key would be:

HKCU\Software\Microsoft\Windows Messaging Subsystem\Profiles\Test
Profile

In there, different subkeys will be created, according to the services
used by the profile, but that is beyond our purpose.

In one of them, and ONLY one of them, there will be a value called
"001e6700", it's a string value containing the path to the default pst
file.

Again, for the sake of an example, lets say in
"HKCU\Software\Microsoft\Windows Messaging Subsystem\Profiles\Test
Profile" I have the following subkeys:

-055380715d92da11950000508baecadf
-065380715d92da11950000508baecadf
-0a0d020000000000c000000000000046
-13dbb0c8aa05101a9bb000aa002fc45a
-295380715d92da11950000508baecadf
-2a5380715d92da11950000508baecadf
-42acdf40ca5b11cdb7ba00aa003cf7f1
-8503020000000000c000000000000046
-9207f3e0a3b11019908b08002b2a56c2
-f85280715d92da11950000508baecadf
-f95280715d92da11950000508baecadf
-fa5280715d92da11950000508baecadf
-fe5280715d92da11950000508baecadf
-ff5280715d92da11950000508baecadf

In one and just one of them there will be a value called "001e6700",
for example, let's suppose it's located at:

HKCU\Software\Microsoft\Windows Messaging Subsystem\Profiles\Test
Profile\065380715d92da11950000508baecadf
String Value: 001e6700
Containing: "C:\Test\test.pst"

***

Analyzing Outlook registry access with Sysinternals Regmon I found
Outlook itself queries on the different subkeys looking for the one
containing the value 001e6700, but just after reading the KB at
http://support.microsoft.com/kb/278940 I realized it was unique.

Hope this helps somebody... at least it helps me, lol.

Thanks everyone for their interest.

Alpha.-
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top