释放PST文件锁



我在VB中有两个函数,我用它来存档我完成项目的电子邮件。第一种是打开我上一年的所有邮件存储,或者一次只打开一个。这些PST文件存储在Dropbox上,所以一旦Outlook打开PST文件,它就会锁定它们,不会让Dropbox同步文件。现在,我有第三个例程,关闭所有打开的PST文件,关闭Outlook并调用一个批处理文件,重新启动Outlook,而不打开PST文件,以便Dropbox可以完成同步。

Sub OPENALL()
Application.GetNamespace("MAPI").AddStore "E:2012.pst"
Application.GetNamespace("MAPI").AddStore "E:2013.pst"
Application.GetNamespace("MAPI").AddStore "E:2014.pst"
Application.GetNamespace("MAPI").AddStore "E:2015.pst"
Application.GetNamespace("MAPI").AddStore "E:2016.pst"
Application.GetNamespace("MAPI").AddStore "E:2017.pst"
Application.GetNamespace("MAPI").AddStore "E:2018.pst"
Application.GetNamespace("MAPI").AddStore "E:2019.pst"
Application.GetNamespace("MAPI").AddStore "E:2020.pst"
Application.GetNamespace("MAPI").AddStore "E:2021.pst"
End Sub
Sub CLOSEMSGSTORE()
Dim objStores As Outlook.Stores
Dim objStore As Outlook.store
Dim objOutlookFile As Outlook.folder
Dim i As Integer

'Get All Outlook Files in Your Outlook
Set objStores = Outlook.Session.Stores

For i = objStores.Count To 1 Step -1

Set objStore = objStores.item(i)
Set objOutlookFile = objStore.GetRootFolder

'Exclude the Outlook OST File for Exchange mailbox
If objStore.ExchangeStoreType = olNotExchange Then
'Close the PST File
Outlook.Session.RemoveStore objOutlookFile
End If
Next

Set objStores = Nothing
Set objStore = Nothing
Set objOutlookFile = Nothing

Shell ("C:UserscsalvOneDriveDocumentsComputer Tweaksoutrestart.bat")
Application.Quit
End Sub

有没有办法强制PST文件上的文件锁定释放而不必关闭Outlook ?谢谢。

默认情况下,MSUPST提供程序将PST文件引用并加载30分钟。或者直到PST提供程序dll本身被卸载(例如,当主机进程终止时)。

您可能想使用https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/222328

中提到的注册表项另一个始终有效的解决方案是将PST处理功能包装到一个不使用Outlook对象模型的单独exe中(例如,您可以使用Redemption(我是它的作者)及其RDOSession)。LogonPstStore方法打开PST文件),并从主可执行文件启动它。当辅助进程退出时,主可执行文件应该能够操作PST文件。

最新更新