本文可帮助修复以下问题:如果其他用户注销远程桌面会话,应用程序崩溃或无响应。
原始 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 共享而不是映射文件夹。
- 使用 交换运行从网络链接器设置编译应用程序:
- 如果应用程序是托管应用,请使用 卷影复制功能。
注意
不建议远程运行二进制文件。 在这种情况下,我们建议使用第一种解决方法。