问题
Is there a way to programmatically find the location of the current user's Outlook .pst file(s) through an API call or registry entry?
回答1:
With Outlook Redemption, you can iterate the message stores in VBA using RDOStores
collection, accessible via the RDOSession.Stores
property.
I am looking into the possibility of doing something similar in out-of-the-box VBA...
EDIT:
Obviously, the path to the PST is encoded in the StoreId string. Google turned up this:
Sub PstFiles()
Dim f As MAPIFolder
For Each f In Session.Folders
Debug.Print f.StoreID
Debug.Print GetPathFromStoreID(f.StoreID)
Next f
End Sub
Public Function GetPathFromStoreID(sStoreID As String) As String
On Error Resume Next
Dim i As Long
Dim lPos As Long
Dim sRes As String
For i = 1 To Len(sStoreID) Step 2
sRes = sRes & Chr("&h" & Mid$(sStoreID, i, 2))
Next
sRes = Replace(sRes, Chr(0), vbNullString)
lPos = InStr(sRes, ":\")
If lPos Then
GetPathFromStoreID = Right$(sRes, (Len(sRes)) - (lPos - 2))
End If
End Function
Just tested, works as designed.
回答2:
The path should be somewhere under:
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook]
Maybe this helps a bit.
来源:https://stackoverflow.com/questions/195849/how-to-find-full-path-of-outlook-pst-file