我为Citrix
应用程序运行Enterprise Architect
会话。
我做了一些需要关闭Citrix会话的修改。
当我关闭Citrix窗口时,它似乎关闭了,但仍然在后台运行。(我可以在丢失的正在运行的程序中看到它。)
如何使用C#强制关闭Citrix会话?
答案 0 :(得分:1)
所以我已经阅读了几次,我仍然不能100%确定你是否在服务器上的会话内运行Citrix Receiver的客户端上运行C#,所以我会回答这两个问题。方式。
1)如何从客户端关闭会话
您可以使用通过ICO访问的Live Monitoring API。 ICO是ICA客户端对象,一种基于COM的API,用于控制win32 Citrix Receiver。以下PowerShell示例演示如何枚举客户端上的会话并将其注销。在C#中执行此操作的代码将非常相似。此示例与服务器名称匹配,但您可以使用不同的名称。例如。注销所有会话,或根据已发布应用的名称进行匹配。
注意:您必须设置PowerShell示例顶部提到的两个注册表项,否则Live Monitoring API将无法工作(出于安全原因)。
2)如何从服务器关闭会话
这更容易,您只需触发注销即可 - 有很多方法可以做到这一点。一种比较常见的方法是使用WTSLogoffSession。你需要从C#进行pinvoke,但定义非常简单:
[DllImport("wtsapi32.dll", SetLastError = true)]
public static extern bool WTSLogoffSession(IntPtr hServer, int sessionId, bool bWait);