C# 在windows应用程序中访问PST文件时出现问题

C# 在windows应用程序中访问PST文件时出现问题,c#,winforms,outlook,office-interop,C#,Winforms,Outlook,Office Interop,在WinForms应用程序中,可以访问Microsoft Outlook根文件夹以获取特定于配置文件的w.r.t PST文件子文件夹。 下面是用于从outlook命名空间获取根文件夹的代码 Microsoft.Office.Interop.Outlook.Application appOutlook = new Microsoft.Office.Interop.Outlook.Application(); appOutlook.Session.AddStore(sPSTFilePath); Mi

在WinForms应用程序中,可以访问Microsoft Outlook根文件夹以获取特定于配置文件的w.r.t PST文件子文件夹。 下面是用于从outlook命名空间获取根文件夹的代码

Microsoft.Office.Interop.Outlook.Application appOutlook = new Microsoft.Office.Interop.Outlook.Application();
appOutlook.Session.AddStore(sPSTFilePath);
Microsoft.Office.Interop.Outlook.NameSpace nsOutlook = appOutlook.GetNamespace("MAPI");
string sSelectedPSTFileName = Path.GetFileNameWithoutExtension(sPSTFilePath);
MAPIFolder rootFolder = nsOutlook.Stores[sSelectedPSTFileName].GetRootFolder();
它工作正常,但在某些PST文件上,当从outlook命名空间w.r.t PST文件名获取根文件夹时,它会抛出一个异常:

MAPIFolder rootFolder = nsOutlook.Stores[sSelectedPSTFileName].GetRootFolder();
异常:尝试的操作失败。找不到对象

我已经在MS Outlook中加载了PST文件,它工作正常。但是,当我从代码中访问该文件时,它显示异常

有没有办法确定PST文件是否已损坏?
在这方面的帮助将不胜感激。

您可以这样尝试

OutLook.MAPIFolder outlook_Folder = null;
Microsoft.Office.Interop.Outlook.NameSpace nsOutlook = appOutlook.GetNamespace("MAPI");
outlook_Folder =nsOutlook.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;
Console.WriteLine("Root Folder: " + outlook_Folder.Name);

Outlook如何在Outlook中显示该PST文件?它是否使用不带.pst扩展名的文件名?或者它使用显示名?它显示文件名而不带扩展名。如果在命名空间.Stores集合中循环,会发生什么情况?新店在那里吗?它是否具有预期的名称?我只能建议使用Redemption—它的RDOSession.Stores.AddPstStore方法返回RDOPstStore对象的ad实例,而不需要按名称访问它。