从C#windows服务使用Outlook Office.Interop

从C#windows服务使用Outlook Office.Interop,c#,outlook,office-interop,C#,Outlook,Office Interop,我刚刚创建了一个C#桌面应用程序供我个人使用,它使用Office.Interop库读取我的outlook日历,并将所有项目发布到Google日历。在我尝试将其转换为windows服务之前,它工作得很好。它总是抛出以下错误: The file E:\...\Outlook Data File.pst cannot be opened. 我尝试使用不同的用户帐户,但没有任何效果。同时,桌面应用程序按预期工作。有什么想法吗 代码: 无人参与、非交互式应用程序中似乎不支持互操作: 相关Stackove

我刚刚创建了一个C#桌面应用程序供我个人使用,它使用
Office.Interop
库读取我的outlook日历,并将所有项目发布到Google日历。在我尝试将其转换为windows服务之前,它工作得很好。它总是抛出以下错误:

The file E:\...\Outlook Data File.pst cannot be opened.
我尝试使用不同的用户帐户,但没有任何效果。同时,桌面应用程序按预期工作。有什么想法吗

代码:


无人参与、非交互式应用程序中似乎不支持互操作:

相关Stackoverflow回答:

MS文章:

无人值守、非交互式应用程序似乎不支持互操作:

相关Stackoverflow回答:

MS文章:

文件的权限?您是以自己或本地系统等身份运行该服务吗?能否显示您正在使用的代码?@PaulFarry:我以我的当前帐户(管理员帐户)运行该服务。代码见附件。谢谢。直言不讳,但是Outlook打开时您是否正在运行该服务?我只对Exchange帐户使用了Outlook interop,但我知道Excel喜欢锁定文件,以便其他进程无法使用它们。我尝试了Outlook运行/不运行两种方案,但也没有帮助。谢谢你的评论。(顺便说一句,由于一些未知原因,我无法登录到我的帐户,因此此评论有点晚)文件的权限?您是以自己或本地系统等身份运行该服务吗?能否显示您正在使用的代码?@PaulFarry:我以我的当前帐户(管理员帐户)运行该服务。代码见附件。谢谢。直言不讳,但是Outlook打开时您是否正在运行该服务?我只对Exchange帐户使用了Outlook interop,但我知道Excel喜欢锁定文件,以便其他进程无法使用它们。我尝试了Outlook运行/不运行两种方案,但也没有帮助。谢谢你的评论。(顺便说一句,由于一些未知原因,我无法登录我的帐户,因此此评论有点晚)
Microsoft.Office.Interop.Outlook.Application application = null;
Microsoft.Office.Interop.Outlook.NameSpace applicationNamespace = null;
Microsoft.Office.Interop.Outlook.MAPIFolder folder = null;
Microsoft.Office.Interop.Outlook.Items calendarItems = null;

application = new Microsoft.Office.Interop.Outlook.Application();
applicationNamespace = application.GetNamespace("MAPI"); ;
folder = applicationNamespace.GetDefaultFolder(
    Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);
calendarItems = folder.Items;

foreach (
    Microsoft.Office.Interop.Outlook.AppointmentItem item in calendarItems)
{
    // process item
}