Word 互操作:可见始终为 false
Word interop: Visible always false
我尝试像下面这样打开 word:
Word.Application app = new Word.Application();
app.Visible = true;
Console.WriteLine($"Visible {app.Visible}");
当 运行 在我的开发机器(Windows 10,Office 365)上运行此代码时,出现 Word(如预期的那样)并且输出为:
Visible: true
当运行在生产机器(Windows Server 2019,Word 2019)上使用此代码时,Word 不会出现,输出为:
Visible: false
生产机器一定有问题,一周前一切正常。
Windows 事件日志没有显示任何指向此问题的信息。重新安装 Word 没有帮助。手动启动 Word 时,它正常启动并按预期显示。
有谁知道如何进一步调查或导致此问题的原因是什么?
编辑
乳清我这样修改代码:
Word.Application app = new Word.Application();
app.Visible = true;
app.Activate(); // System.Runtime.InteropServices.COMException
...我得到一个异常:
Anwendung kann nicht aktiviert werden. HRESULT:0x800A11F9
我找到了以下文章 COM Exception 0x800A11F9 - Cannot activate application,但这并没有提供解决方案。
HRESULT:0x800A11F9
我运行以管理员身份申请。
我终于解决了问题。
另一个应用程序更改了 dcomcnfg 中的 Word 安全设置。
我将设置更改为以下(德语/英语):
一般: Authentifizierungsebene: Keine /
身份验证级别:None
安全性:为所有点选择设置,并将所有权限授予Administrators/Remotedesktop用户(生产服务器充当
终端服务器)
身份:选项Der Benutzer, der die Anwendung startet. /
启动应用程序的用户。
在 dcomcnfg 中,Word 不是按名称而是按 AppId 列出的。为了找出 Word 确实有哪个 AppId,我发现了这个 article,它指出
Look for
HKEY_CLASSES_ROOT\CLSID{00020906-0000-0000-C000-000000000046}
我尝试像下面这样打开 word:
Word.Application app = new Word.Application();
app.Visible = true;
Console.WriteLine($"Visible {app.Visible}");
当 运行 在我的开发机器(Windows 10,Office 365)上运行此代码时,出现 Word(如预期的那样)并且输出为:
Visible: true
当运行在生产机器(Windows Server 2019,Word 2019)上使用此代码时,Word 不会出现,输出为:
Visible: false
生产机器一定有问题,一周前一切正常。
Windows 事件日志没有显示任何指向此问题的信息。重新安装 Word 没有帮助。手动启动 Word 时,它正常启动并按预期显示。
有谁知道如何进一步调查或导致此问题的原因是什么?
编辑 乳清我这样修改代码:
Word.Application app = new Word.Application();
app.Visible = true;
app.Activate(); // System.Runtime.InteropServices.COMException
...我得到一个异常:
Anwendung kann nicht aktiviert werden. HRESULT:0x800A11F9
我找到了以下文章 COM Exception 0x800A11F9 - Cannot activate application,但这并没有提供解决方案。 HRESULT:0x800A11F9
我运行以管理员身份申请。
我终于解决了问题。
另一个应用程序更改了 dcomcnfg 中的 Word 安全设置。
我将设置更改为以下(德语/英语):
一般: Authentifizierungsebene: Keine / 身份验证级别:None
安全性:为所有点选择设置,并将所有权限授予Administrators/Remotedesktop用户(生产服务器充当 终端服务器)
身份:选项Der Benutzer, der die Anwendung startet. / 启动应用程序的用户。
在 dcomcnfg 中,Word 不是按名称而是按 AppId 列出的。为了找出 Word 确实有哪个 AppId,我发现了这个 article,它指出
Look for HKEY_CLASSES_ROOT\CLSID{00020906-0000-0000-C000-000000000046}