来自HRESULT的异常:0x800401E3(MK_E_UNAVAILABLE)解决方法

use*_*708 15 c# ms-office

从以下电话

Marshal.GetActiveObject("Excel.Application")
Run Code Online (Sandbox Code Playgroud)

我得到了

操作不可用(HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))

我相信当我的应用程序和excel之间的用户权限不匹配时会导致此错误.

我想知道是否有关于如何访问打开的Excel应用程序的解决方法,无论excel如何打开,我都可以以管理员身份打开我想要访问的程序.

另外我想知道如何判断打开了哪些权限进程?我一直在使用ProcessExplorer来查看UserProfile(在两个应用程序中都是相同的)和Owner(也是相同的BUILTIN\Administrators)

背景 我有一个程序通过调用NUnit-console-x86来运行不同的测试.正在测试的应用程序打开一个excel表单,这是我想要从中读取数据的表单.当我以管理员身份运行我的程序时,或者我没有得到这些错误,我也尝试添加Process.StartInfo.Verb ="runas"; 到我启动NUnit的程序,但我仍然遇到这些错误

虽然我不想在每台计算机上安装visual studio,但看起来安装visual studio解决了这个问题.任何人都可以向我解释这些吗?

Dyl*_*eau 5

查看Microsoft支持信息,当excel(或一般来说,office)未处于活动状态或在“运行的对象表”中运行时,似乎会生成0x800401e3。调用此文件之前,您必须打开excel的副本。您可能尚未在代码中打开excel,或者尚未完全注册。这可能是问题吗?

  • 根据您链接的文章:“当 Office 应用程序启动时,它不会立即注册其运行对象。这优化了应用程序的启动过程。Office 应用程序不是在启动时注册,而是在失去焦点后在 ROT 中注册其运行对象。 ” 我发现你需要专注于不同的窗口来完成这个(只是最小化确实有效......),有点老套,我想知道是否有更好的方法:( (2认同)