我有一个从Outlook发送电子邮件的C#exe,如果手动运行,它可以正常工作。
我正在尝试通过任务计划程序运行它,但它出现以下错误:
System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
at sendMail.Program.Main(String[] args) in D:\Recovered\Root\Projects\sendMail\sendMail\Program.cs:line 20
答案 0 :(得分:1)
我找到了一个黑客。我可以修复异常,但它正在发送电子邮件,因为Microsoft不允许COM对象通过服务运行(在我的案例中是Task Scheduler)。
我根据需要每隔几个小时创建一个脚本并触发命令,因为它是作为程序而不是服务运行的,它工作正常,唯一的缺点是从我的脚本调用的睡眠调用。
答案 1 :(得分:0)
Microsoft的manual提供了这个:
原因:如果许多COM +应用程序在不同的用户帐户下运行 在“此用户”属性中指定的,计算机不能 分配内存为新用户创建新的桌面堆。 因此,这个过程无法启动。
替代方法:要解决此问题,请修改该值 以下注册表子项: HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\会话 管理器\子系统\视窗
答案 2 :(得分:0)
Outlook是一个单例 - COM系统将拒绝封送在不同安全上下文中运行的两个进程之间的调用。