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

本文有助于修复以下问题:当其他用户注销远程桌面会话时,应用程序崩溃或无响应。

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

症状

从映射驱动器运行应用程序时,当另一个用户注销时,应用程序会因用户 (或多个用户) 而无响应或崩溃。 Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2 Service Pack 1 (SP1) 和 Windows Server 2008 中会出现此问题。 例如,在以下方案中可能会出现此问题:

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

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

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

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

    • 在 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。 此问题在此版本的 Windows Server 中已修复。

解决方法

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

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

注意

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