故障排除
排查已发布的应用程序的会话注销问题
发布应用程序时,仅指定已发布的应用程序的主可执行文件。但是,某些应用程序可能会生成在后台运行的额外(子)进程,并且当主已发布的应用程序关闭时,这些进程不会被相应的主可执行文件关闭。额外进程也可能由执行的脚本或特定的注册表项(例如
Run 和 RunOnceKey)创建。这些应用程序可能会阻止正常注销,导致会话残留或挂起,并可能导致会话不关闭且用户无法注销。
在这种情况下,您需要使用 Citrix Director 重置或退出这些会话。
为了帮助识别和排查会话未正确注销的问题,Citrix 提供了三个注册表项。识别和排查由于这些问题导致会话未正确注销是一个三步过程:
-
识别哪些会话的已发布应用程序正在阻止正常注销
步骤 2:识别这些已发布的应用程序是否生成任何额外的(子)进程
一旦确定某个已发布的应用程序会阻止正常注销,下一步是确定此应用程序在运行时是否会生成额外的进程。
您可以阅读
HKCU\Software\CitrixVolatile\Seamless\Sessions\[ID]\LogoffCheckerBlockingProcess 以确定在关闭已发布的应用程序时是否有任何进程阻止正常注销。
在以下示例中,键
LogoffCheckerBlockingProcess 包含以下条目:
PhoneExperienceHost.exe
SkypeApp.exe
SkypeBackgroundHost.exe
这些进程阻止了正常注销。
注意:
步骤 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
有关
LogoffCheckSysModules 的更多信息,请参阅 从已发布的应用程序正常注销使会话处于活动状态。
分步故障排除指南
-
在测试中的 VDA 下启动远程注册表服务:
-
在“控制面板”中,选择 “管理工具”>“服务”。
-
右键单击 “远程注册表服务”,然后选择 “属性”。
-
在 “启动类型” 下,从下拉菜单中选择 “自动”。

-
-
在测试 VDA 上关闭 Windows 防火墙,或者创建入站防火墙规则以启用端口 455:
-
在“控制面板”中,选择 Windows Defender 防火墙 > 高级设置。
-
右键单击入站规则,然后选择新建规则。
-
在新建入站规则向导中,选择端口。
-
在协议和端口页面上,选择 TCP 和特定本地端口。输入
445作为本地端口。 -
在操作页面上,选择允许连接。
-
选择要应用新入站规则的防火墙配置文件。
-
命名防火墙规则,然后选择完成以退出新建入站规则向导。

-
-
从同一域中的另一台 VM(可以是 DC、DDC 或其他 VDA)运行
Regedit并连接到远程注册表。
-
输入测试 VDA 的 IP 地址,然后单击确定。
regedit树必须显示测试 VDA 的分支。
-
打开命令提示符已发布的应用程序。
Citrix Workspace 上显示命令提示符应用程序。
-
在客户端上打开连接中心。这用于在关闭已打开的无缝应用程序后,监控会话何时注销。我们可以在下图中看到命令提示符进程
c:\Windows\system32\cmd.exe在远程 VDI 上处于活动状态。
-
从运行 regedit 的 VDA,转到以下远程 IP 位置:
HKEY_USERS\S-1-X-XX-XXXXXXXX-XXXXXXXXXXX-XXXXXXXXXX-XXXX\SOFTWARE\CitrixVolatile\Seamless\Sessions\X\注意:每次打开新会话时,此路径都会更改。 -
这里有两个要读取的键(不要在此处更改它们):LogoffCheckBlockingProcess 和 LogoffCheckerBlockingVisibleProcess。这些键显示任何阻止注销的程序。第一个必须显示
C:\Windows\System32\cmd.exe,因为它已打开且尚未关闭。注意:LogoffCheckBlockingProcess 和 LogoffCheckerBlockingVisibleProcess 不得手动编辑。手动编辑这些注册表值可能会导致会话不稳定。
-
单击右上角的 X 以退出 Seamless CMD。
-
检查连接中心以查看会话是否关闭。可能需要长达 30 秒才能关闭。如果关闭,则没有应用程序或进程阻止正常注销。

-
如果会话未关闭,请按 F5 刷新 regedit 输出。
-
再次检查 LogoffCheckBlockingProcess 和 LogoffCheckerBlockingVisibleProcess 的内容。CMD 不应再存在,但应该有另一个列出的进程。当前阻止会话注销的任何进程都必须在此处显示。在这种情况下,在命令提示符关闭之前,Notepad.exe 是从已发布的命令提示符打开的,并且此远程记事本进程正在阻止正常注销。

-
记下此可执行文件的路径以及它出现在哪个键中,并在远程树下的以下注册表项中输入它:
-
如果它出现在 LogoffCheckBlockingProcess 中:
HKLM\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWILogoffCheckSysModulesInternal -
如果它出现在 LogoffCheckerBlockingVisibleProcess 中:
HKLM\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWILogoffCheckVisibleSysModules
注意:如果该键中已有一个或多个条目,请在末尾添加逗号,并将新条目放在逗号之后。
-
-
从客户端的连接中心注销会话,然后重新打开远程应用程序。
-
重复步骤 9-16,直到在关闭远程应用程序后 30 秒内自动注销会话。注意:故障排除后,如有需要,请还原临时防火墙更改以允许远程注册表访问。
如何修改 LogonUI 以在打开已发布的应用程序时全尺寸查看 Windows 免责声明消息
在不发生身份验证直通的情况下,LogonUI 窗口的缩放功能得到了改进。LogonUI 窗口根据所使用的显示器分辨率和 DPI 设置进行缩放,这确保了完整的 LogonUI 窗口可见,而不会出现任何剪裁。
窗口大小(以像素为单位)也可以在注册表中手动设置。
-
使用 Run 命令上的
regedit打开 Registry Editor。 -
转到
HKEY_LOCAL_MACHINE\Software\Citrix\CtxHook\AppInit_DLLS\Seamless Hook\。 -
创建两个新的 DWORD 键:LogonUIWidth 和 LogonUIHeight。
-
将这些键的值设置为 LogonUI 窗口所需的像素宽度和高度。手动设置 LogonUI 窗口大小时,自动缩放将被禁用。
注意:
这些注册表路径已从 2407 及更高版本开始更改。旧的注册表值将被忽略并已弃用。
默认情况下,LogonUI 窗口包含一个带有关闭按钮的标题栏,如果需要,最终用户可以使用该按钮断开会话连接。
禁用标题栏
您可以使用以下注册表项禁用 LogonUI 窗口中的标题栏:
-
使用
regedit在 运行 命令上打开注册表编辑器。 -
转到
HKEY_LOCAL_MACHINE\Software\Citrix\CtxHook\AppInit_DLLS\Seamless Hook\。 -
创建新的 DWORD 键:LogonUICaption,并将该键的值设置为
0。带有标题栏的 LogonUI 窗口 (/en-us/citrix-virtual-apps-desktops/2607-ltsr/media/logonui-window-with-tilebar.png)
已发布的应用程序未显示
请参阅支持文章,以解决 已发布的应用程序无法启动或在启动期间消失 或 无法显示 的情况。
排查实例
其他无缝配置设置
在大多数情况下,默认服务器设置足以满足大多数应用程序的需求,并且已发布的应用程序不需要额外设置。
在某些情况下,需要额外配置,包括控制指定应用程序窗口的交互和显示,以及已发布的应用程序环境本身的设置。
注意:
除非 Citrix 支持明确指示,否则 Citrix 不建议更改这些配置设置
这些设置在 无缝配置设置知识库文章 中有详细说明。