我为Enterprise Architect应用程序运行一个Citrix会话。
我做了一些需要关闭Citrix会话的修改。
当我关闭Citrix窗口时,它似乎只是关闭了,但仍然在后台运行。(我可以在运行程序的丢失中看到这一点。)
如何使用C#强制关闭Citrix会话?
发布于 2014-11-04 15:01:29
所以我已经读了几次了,但我仍然不能100%确定你的C#是不是在服务器上的会话中运行Citrix Receiver的客户机上运行的-所以我会两种方式都回答。
1)如何从客户端关闭会话
您可以使用通过ICO访问的实时监控API。ICO是ICA客户端对象,这是一个基于COM的应用编程接口,用于控制win32 Citrix接收器。以下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);https://stackoverflow.com/questions/26628964
复制相似问题