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

#winapi #vba #outlook #registry #pst

Вопрос:

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

Ответ №1:

С помощью Outlook Redemption вы можете повторять хранилища сообщений в VBA с помощью RDOStores коллекции, доступной через 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 amp; Chr("amp;h" amp; 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
 

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

Комментарии:

1. Удобство выкупа заключается в том, что он явно предоставляет rdopstore. Свойство PstPath ( dimastr.com/redemption/rdostore.htm#RDOPstStore ) без необходимости взлома идентификатора входа в магазин.

Ответ №2:

Тропинка должна быть где-то под:

[HKEY_CURRENT_USERПрограммное обеспечениеMicrosoftWindows NTТекущая версияПодсистема обмена сообщениями WindowsПрофилиOutlook]

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