c# - 使用 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。
谢谢!
解决方案
我们找到了罪魁祸首。事实证明,我们中的许多人都更换了笔记本电脑,并且该型号的触摸屏在 Windows 中处于活动状态。如果我们使用激活了触摸屏的笔记本电脑连接虚拟机,则此错误开始发生。
解决方案:不要使用激活了触摸屏的工作站连接到 VM。
推荐阅读
- github-pages - 在 github-pages 上托管 Hugo 网站
- python - 为什么对 GridSearchCV 的第二次 fit 调用无休止地工作?
- python - 在 Scipy 的 cKDTree 例程中定义最小半径
- nancy - 如何在南希处理日期绑定?
- gradle - org.gradle.tooling.GradleConnectionException:无法获取“BuildEnvironment”类型的模型
- java - Android Studio 在打字时卡住了
- javascript - mongoDB 通过 find 得到“未定义”
- javascript - 转移焦点() - Angular 5
- php - 在多个数组中查找项目
- javascript - 带有函数和 this 的 Javascript 对象