#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]
Может быть, это немного поможет.