在 Citrix 环境中排除 Slack 故障

如果你在 Citrix 中使用 Slack,但无法启动桌面应用,请了解有关此问题,以及如何解决此问题的更多信息。 

 

启动 Slack 时出现问题

导致此问题的原因

Citrix 环境(例如 XenApp 和 XenDesktop )使用动态链接库 (DLL) 重定向以路由 API 通话,在呼叫 Windows 操作系统 API 之前执行额外的任务。 

由于 Slack 桌面应用和 Citrix 的第三方 DLL 不兼容,Slack 可能无法在 Citrix 环境中加载。 

 

启动 Slack 时你会看到的内容

在你尝试启动 Slack 应用之后,应用显示未启动。但是,如果你打开任务管理器,会发现 slack.exe 过程正在运行。Slack 也可能在任务栏中显示,但你无法与该应用互动。 

一般来说,该应用会在约 15 分钟后完成启动过程,并可正常使用,但是,你会收到多份报告,显示 slack.exe 进程在这段时间内崩溃。 

 

从 DLL 挂钩编程中豁免 slack.exe

要解决与启动 Slack 应用相关的问题,你可以在 Citrix 环境的 DLL 挂钩编程机制中豁免特定的进程。你可以手动添加注册表值,或运行 PowerShell 脚本来自动创建注册表值。 

手动添加 slack.exe 注册表值

  1. 在电脑上,按 WinR 键,然后键入 regedit.exe。 
  2. 检查以下这些键,并添加未看到的部分:
    HKEY_LOCAL_MACHINE/SOFTWARE/Citrix/CtxHook
    HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Citrix/CtxHook
    HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Citrix/CtxHook64
  3. 如果它还不存在,请确保为上面列出的每个键添加一个注册表值:

    名称:ExcludedImageNames
    类型:REG_SZ
    值:slack.exe

  4. 如果 ExcludedImageNames 已经存在,请确保将 slack.exe 添加到可执行文件的名称中,并确保它们以逗号 (,) 分隔,如下所示:
    App1.exe,App2.exe,slack.exe
  5. 检查是否有以下键,如果不存在,请添加:
    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/CtxUvi
  6. 如果在步骤 5 已添加了这个键,请确保还添加了以下注册表值:

    名称:UviProcessExcludes
    类型:REG_SZ
    值:slack.exe

  7. 如果 UviProcessExcludes 已经存在,请确保将 slack.exe 添加到可执行文件的名称中,并用分号 (;) 分隔,如下所示:
    App1.exe;App2.exe;slack.exe
有关其他信息,请参阅官方 Citrix 文档

 

运行 PowerShell 脚本,以创建注册表值 

  1. 下载这个 PowerShell 脚本
  2. 下载完成后,右键单击脚本文件,然后选择通过 PowerShell 运行。 
  3. 重启电脑,然后重启 Slack 桌面应用。 

小窍门:如果因为违反执行政策,无法运行 PowerShell 脚本,请按照 Microsoft 文档的说明更新你的电脑政策。