如果其他用户在 Windows Server 2012/R2 或 Windows Server 2008/R2 中注销远程桌面会话,应用程序将崩溃或无响应

本文可帮助修复另一个用户注销远程桌面会话时应用程序崩溃或无响应的问题。

适用于:  Windows Server 2012R2
原始 KB 编号:   2536487

症状

从映射驱动器运行应用程序时,对于用户 (或多个用户,当另一) 注销时,该应用程序将变得无响应或崩溃。 此问题发生在 Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2 Service Pack 1 (SP1) 和 Windows Server 2008 中。 例如,此问题可能发生在以下情况中:

  • 一台服务器是文件服务器,另一台服务器是远程会话主机 (终端服务器) 。

  • 将映射文件服务器上供连接到 RDS 服务器的远程用户使用的文件夹。

  • 映射共享上的应用程序由多个用户启动。

  • 一个用户注销。 这会导致应用程序的其他用户遇到应用程序崩溃或无响应。 根据操作系统版本,当应用程序的第一个或最后一个用户注销时会出现此问题,如下所示:

    • 在 Windows Server 2012 R2、Windows Server 2012 和 Windows Server 2008 中,第一个登录的用户注销时会出现此问题。
    • 在 Windows Server 2008 R2 SP1 中,当最后一个登录的用户注销时,会出现此问题。

备注

在 Windows Server 2008 R2 SP1 中,此行为在安装修补程序2559767后与 Windows Server 2012 R2、Windows Server 2012 和 Windows Server 2008 的行为相同。

原因

发生此问题的原因是重定向程序处理文件控制阻止 (FCB) 二进制文件的方式。

在 Windows Server 2012 R2、Windows Server 2012 和 Windows Server 2008 中,FCB 归打开文件的第一个用户所有,后续用户使用此 FCB。 当第一个用户注销时,FCB 将孤立。 这会导致应用程序在后续使用时崩溃或无响应。
在 Windows Server 2008 R2 中,FCB 归最后一个打开文件的用户所有,上一个用户注销时前用户遇到问题。

从技术上说,FCB 不归特定用户所有。 它只是表示文件的共享结构。 FCB 是在打开文件的第一个句柄时创建的,在关闭文件的最后一个句柄时将销毁它。 因此,它并不绑定到用户。

孤立实体是属于注销用户的文件对象。 如果该文件对象支持文件系统缓存或映射节,则可能会遇到这些 I/O 错误。

解决方案

若要解决此问题,请升级到Windows Server 2016 。 This issue is fixed in this version of Windows Server.

解决方法

若要解决此问题,请使用以下某种方法:

  • 不要从映射文件夹运行共享应用程序。 相反,在终端服务器上本地安装共享应用程序。
  • 如果需要远程二进制共享,请使用 WebDAV 共享,而不是映射的文件夹。
  • 使用交换从网络链接器 运行设置 编译应用程序:
  • 如果应用程序是托管应用,请使用"卷 影复制"功能

备注

建议不要远程运行二进制文件。 在这种情况下,我们建议你使用第一种解决方法。