Marshal.GetActiveObject(“Word.Application”)中的MK_E_UNAVAILABLE

时间:2013-04-06 15:03:01

标签: c#

在我的情况下,当UAC(用户帐户控制)未设置为不受限制的“从不通知我”时,出现<0x> 0x800401E3(MK_E_UNAVAILABLE)错误。

Microsoft.Office.Interop.Word.Application wd = (Microsoft.Office.Interop.Word.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");

在发布和安装项目后运行代码时会引发错误。在编辑器中进行调试时,一切都很好。

这是由于安全设置还是凭据?如何正确编写这样的代码?

当然,Win Word已打开,文档也已打开,并且此代码始终正常,UAC设置为“从不通知我”。

1 个答案:

答案 0 :(得分:1)

将word作为服务运行是令人讨厌的业务,例如here。我经历了很多问题让它发挥作用。我的工作方式是在单独的过程中运行它,只启动一次。主程序通过将命令作为字符串发送到进程的stdin并等待stdout上的响应来与进程通信。如果响应未及时分配,则该过程将被终止并重新启动