Citrix Virtual Apps and Desktops

故障排除

故障排除已发布的应用程序的会话注销问题

发布应用程序时,仅指定已发布应用程序的主可执行文件。但是,某些应用程序可能会生成在后台运行的额外(子)进程,并且在主已发布应用程序关闭时,这些进程不会被相应的主可执行文件关闭。额外进程也可能由执行的脚本或特定的注册表项(例如 RunRunOnceKey)创建。这些应用程序可能会阻止正常注销,导致会话残留或挂起,并可能导致会话无法关闭且用户无法注销。

在这种情况下,您需要使用 Citrix Director 重置或退出这些会话。

为了帮助识别和排除会话无法正常注销的问题,Citrix 提供了三个注册表项。识别和排除由于这些问题导致会话无法正常注销是一个三步过程:

  1. 识别哪些会话中运行的已发布应用程序正在阻碍正常注销

  2. 识别这些已发布的应用程序是否生成任何额外(子)进程

  3. 将这些进程添加到指定的注册表项以防止它们阻止注销

步骤 2:识别这些已发布的应用程序是否生成任何额外(子)进程

一旦确定某个已发布的应用程序阻止了正常注销,下一步是确定此应用程序在运行时是否生成额外进程。

您可以阅读 HKCU\Software\CitrixVolatile\Seamless\Sessions\[ID]\LogoffCheckerBlockingProcess 以确定在关闭已发布的应用程序时是否有任何进程阻止正常注销。

在以下示例中,键 LogoffCheckerBlockingProcess 包含以下条目:

PhoneExperienceHost.exe
SkypeApp.exe
SkypeBackgroundHost.exe
<!--NeedCopy-->

这些进程已经阻碍了正常注销。

注意:

将 [ID] 替换为您要检查的会话的正确会话 ID。

步骤 3: 将这些进程添加到指定的注册表项以防止它们阻止注销

您可以将这些进程添加到以下注册表项,以防止它们在未来的会话中阻止注销:

Add the process file name to the following registry key:
Caution! Refer to the Disclaimer at the end of this article before using the Registry Editor.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWI
Value Name:LogoffCheckSysModules
Type:REG_SZ
String:MyAppName.exe
<!--NeedCopy-->

有关 LogoffCheckSysModules 的更多信息,请参阅 从已发布的应用程序正常注销导致会话处于活动状态

故障排除分步操作指南

  1. 在受测 VDA 下启动远程注册表服务:

    1. 在“控制面板”中,选择 管理工具 > 服务

    2. 右键单击 远程注册表服务,然后选择 属性

    3. 启动类型 下,从下拉菜单中选择 自动

    已发布的应用程序注册表

  2. 关闭受测 VDA 上的 Windows 防火墙,或创建入站防火墙规则以启用端口 455:

    1. 在“控制面板”中,选择 Windows Defender 防火墙 > 高级设置

    2. 右键单击 入站规则,然后选择 新建规则

    3. 新建入站规则向导 中,选择 端口

    4. 协议和端口 页面上,选择 TCP 和特定本地端口。将 445 输入为本地端口。

    5. 操作 页面上,选择 允许连接

    6. 选择要应用新入站规则的防火墙配置文件。

    7. 命名防火墙规则,然后选择“完成”以退出“新建入站规则向导”。

      已发布的应用程序防火墙端口

  3. 从同一域中的另一台 VM(可以是 DC、DDC 或其他 VDA)运行 Regedit 并连接到远程注册表。

    已发布的应用程序注册表编辑器

  4. 输入正在测试的 VDA 的 IP 地址,然后单击“确定”。regedit 树必须显示正在测试的 VDA 的分支。

    已发布的应用程序 regedit

  5. 打开“命令提示符”已发布的应用程序。

    已发布的应用程序管理

    命令提示符”应用程序显示在 Citrix Workspace 上。

    已发布的应用程序命令提示符

  6. 在客户端上打开“连接中心”。这用于在关闭已打开的无缝应用程序后,监控会话何时注销。我们可以从下图中看到,命令提示符进程 c:\Windows\system32\cmd.exe 在远程 VDI 上处于活动状态。

    已发布的应用程序连接

  7. 从运行 regedit 的 VDA,转到以下远程 IP 位置: HKEY_USERS\S-1-X-XX-XXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX-XXXX\SOFTWARE\CitrixVolatile\Seamless\Sessions\X\

    注意:

    每次打开新会话时,此路径都会更改。

  8. 此处有两个要读取的键(请勿在此处更改它们):LogoffCheckBlockingProcessLogoffCheckerBlockingVisibleProcess。这些键显示任何阻止注销的程序。第一个必须显示 C:\Windows\System32\cmd.exe,因为它已打开且尚未关闭。

    注意:

    LogoffCheckBlockingProcess and LogoffCheckerBlockingVisibleProcess must not be manually edited. Manually editing these registry values could lead to unstable sessions.

    已发布的应用程序 2

  9. 单击右上角的 X 以退出 Seamless CMD

  10. 检查连接中心以查看会话是否关闭。可能需要长达 30 秒才能关闭。如果关闭,则没有应用程序或进程阻止正常注销。

    正常注销

  11. 如果会话未关闭,请按 F5 刷新 regedit 输出。

  12. 再次检查 LogoffCheckBlockingProcessLogoffCheckerBlockingVisibleProcess 的内容。CMD 不应再存在,但应该有另一个列出的进程。此处必须显示当前阻止会话注销的任何进程。

    在这种情况下,在命令提示符关闭之前,Notepad.exe 从已发布的命令提示符中打开,并且此远程记事本进程正在阻止正常注销。

    注册表编辑器

  13. 记下此可执行文件的路径以及它出现在哪个键中,并将其输入到远程树下的以下注册表键中:

    • If it appears in LogoffCheckBlockingProcess: HKLM\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWILogoffCheckSysModulesInternal
    • 如果发现它出现在名为 LogoffCheckerBlockingVisibleProcess 的条目中,则需要进行进一步的检查:HKLM\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWILogoffCheckVisibleSysModules

    注意:

    如果该键中已有一个或多个条目,请在末尾添加一个逗号,并将新条目放在逗号后面。

    注册表编辑器-最终

  14. 从客户端的连接中心从会话中注销,然后重新打开远程应用程序。

  15. 重复步骤 9-16,直到在关闭远程应用程序后的 30 秒内会话自动注销。

    注意:

    故障排除后,如果需要,请恢复临时防火墙更改以允许远程注册表访问。

如何在打开已发布的应用程序时修改 LogonUI 以全尺寸查看 Windows 免责声明消息

LogonUI 窗口缩放已改进,适用于未发生身份验证直通的场景。LogonUI 窗口根据所使用的显示器分辨率和 DPI 设置进行缩放,这确保了完整的 LogonUI 窗口可见且没有裁剪。

窗口大小(以像素为单位)也可以在注册表中手动设置。

  1. 使用 运行 命令上的 regedit 打开 注册表编辑器

  2. 转到 HKEY_LOCAL_MACHINE\Software\Citrix\CtxHook\AppInit_DLLS\Seamless Hook\

  3. Create two new DWORD keys: LogonUIWidth and LogonUIHeight.

  4. 将这些键的值设置为 LogonUI 窗口所需的宽度和高度(以像素为单位)。

    手动设置 LogonUI 窗口大小时,自动缩放将被禁用。

注意:

这些注册表路径已从 2407 及更高版本更改。旧的注册表值将被忽略并已弃用。

默认情况下,LogonUI 窗口包含一个带有关闭按钮的标题栏,用户可以在需要时断开会话。

禁用标题栏

您可以使用以下注册表项禁用 LogonUI 窗口中的标题栏:

  1. 在“运行”命令上使用 regedit 打开注册表编辑器。

  2. 转到 HKEY_LOCAL_MACHINE\Software\Citrix\CtxHook\AppInit_DLLS\Seamless Hook\

  3. 创建新的 DWORD 键:LogonUICaption,并将该键的值设置为 0

    带有标题栏的 LogonUI 窗口

已发布的应用程序未显示

请参阅支持文章,以排查 已发布的应用程序无法启动或在启动期间消失无法显示 的情况。

对实例进行故障排除

关于无缝配置的其他设置

在大多数情况下,默认服务器设置足以满足大多数应用程序的需求,并且已发布的应用程序不需要其他设置。

在某些情况下,需要进行额外配置,包括控制指定应用程序窗口的交互和显示,以及已发布的应用程序环境本身的设置。

注意:

除非 Citrix 支持明确指示,否则 Citrix 不建议更改这些配置设置

这些设置在无缝配置设置知识库文章中有所阐述。