How to find full path of Outlook .pst file?

后端 未结 2 1578
灰色年华
灰色年华 2021-02-10 05:21

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?

相关标签:
2条回答
  • 2021-02-10 05:32

    With Outlook Redemption, you can iterate the message stores in VBA using RDOStorescollection, 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.

    0 讨论(0)
  • 2021-02-10 05:55

    The path should be somewhere under:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook]

    Maybe this helps a bit.

    0 讨论(0)
提交回复
热议问题