首页 > 解决方案 > 使用 Microsoft.Office.Interop.Excel 打开 excel 文件的应用程序与服务器上的 RDP 会话冲突

问题描述

我最近在 Windows Server 2016/2019 上开始出现一种奇怪的行为。我使用不同版本的 Excel(2016、2019、365)进行了测试,当在服务器上打开远程桌面会话时,问题随机发生(从某些机器启动的一些 RDP 不会导致任何问题,而另一些则导致应用程序没有在职的)。

打开excel的代码非常简单,并且工作了几年没有任何问题:

string filePath = @"C:\excelFilePath.xlsx";
Application excelApp = new Application();
excelApp.Workbooks.Open(filePath , true, true);

当它失败时,我们得到以下异常:

远程过程调用失败。(来自 HRESULT 的异常:0x800706BE) System.Runtime.InteropServices.COMException (0x800706BE):远程过程调用失败。(来自 HRESULT 的异常:0x800706BE)在 Microsoft.Office.Interop.Excel.Workbooks.Open(字符串文件名,对象 UpdateLinks,对象只读,对象格式,对象密码,对象 WriteResPassword,对象 IgnoreReadOnlyRecommended,对象来源,对象分隔符,对象可编辑,对象通知、对象转换器、对象 AddToMru、对象本地、对象 CorruptLoad)

对于冲突的 RDP,我注意到 rdpinput.exe 进程已激活,而没有冲突的进程则没有激活该进程的痕迹。如果该服务器上没有打开 RDP 会话,则一切正常。

知道如何解决这个问题吗?我们仍然需要能够对服务器进行 RDP。

谢谢!

标签: c#excel-interopwindows-server-2016windows-server-2019excel-automation

解决方案


我们找到了罪魁祸首。事实证明,我们中的许多人都更换了笔记本电脑,并且该型号的触摸屏在 Windows 中处于活动状态。如果我们使用激活了触摸屏的笔记本电脑连接虚拟机,则此错误开始发生。

解决方案:不要使用激活了触摸屏的工作站连接到 VM。


推荐阅读