杀死Citrix会话C#

时间:2014-10-29 11:17:48

标签: c# enterprise-architect citrix

我为Citrix应用程序运行Enterprise Architect会话。

我做了一些需要关闭Citrix会话的修改。

当我关闭Citrix窗口时,它似乎关闭了,但仍然在后台运行。(我可以在丢失的正在运行的程序中看到它。)

如何使用C#强制关闭Citrix会话?

1 个答案:

答案 0 :(得分:1)

所以我已经阅读了几次,我仍然不能100%确定你是否在服务器上的会话内运行Citrix Receiver的客户端上运行C#,所以我会回答这两个问题。方式。

1)如何从客户端关闭会话

您可以使用通过ICO访问的Live Monitoring API。 ICO是ICA客户端对象,一种基于COM的API,用于控制win32 Citrix Receiver。以下PowerShell示例演示如何枚举客户端上的会话并将其注销。在C#中执行此操作的代码将非常相似。此示例与服务器名称匹配,但您可以使用不同的名称。例如。注销所有会话,或根据已发布应用的名称进行匹配。

http://smulpuru.wordpress.com/2013/06/27/client-side-xenapp-session-enumeration-and-selective-logoff-based-on-xenapp-server-using-ica-client-object-wficalib/

注意:您必须设置PowerShell示例顶部提到的两个注册表项,否则Live Monitoring API将无法工作(出于安全原因)。

2)如何从服务器关闭会话

这更容易,您只需触发注销即可 - 有很多方法可以做到这一点。一种比较常见的方法是使用WTSLogoffSession。你需要从C#进行pinvoke,但定义非常简单:

    [DllImport("wtsapi32.dll", SetLastError = true)]
    public static extern bool WTSLogoffSession(IntPtr hServer, int sessionId, bool bWait);