Как найти полный путь к файлу Outlook .pst?

Есть ли способ программно найти расположение PST-файлов Outlook текущего пользователя с помощью вызова API или записи в реестре?


person Vic    schedule 12.10.2008    source источник


Ответы (2)


С помощью Outlook Redemption вы можете перебирать хранилища сообщений в VBA с помощью RDOStorescollection, доступного через свойство RDOSession.Stores.

Я изучаю возможность сделать что-то подобное в стандартном VBA...

РЕДАКТИРОВАТЬ:

Очевидно, что путь к PST закодирован в строке StoreId. Google обнаружил это:

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

Только что проверил, работает как задумано.

person Tomalak    schedule 13.10.2008
comment
Удобство Redemption заключается в том, что он явно предоставляет свойство RDOPstStore.PstPath (dimastr.com/redemption/ rdostore.htm#RDOPstStore) без необходимости взлома идентификатора записи в магазине. - person Dmitry Streblechenko; 12.09.2014

Путь должен быть где-то под:

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Подсистема обмена сообщениями Windows\Profiles\Outlook]

Может быть, это немного поможет.

person Node    schedule 12.10.2008