如何获取 Citrix 会话或终端服务会话的客户端 IP 地址或主机名?





4.00/5 (7投票s)
如何获取 Citrix 会话或终端服务会话的客户端 IP 地址或主机名?
引言
您是否曾经尝试获取 Citrix 或终端服务会话的客户端 IP 地址,但遇到了困难? 我收到过几封电子邮件询问如何做到这一点。 我想我应该写一篇关于它的博客。 我可以想到四种方法来做到这一点,如果您可以添加到列表中,请通过评论进行添加。 让我们马上开始吧。
使用代码
最简单的方法是使用 MFCOM API 获取会话列表并枚举每个会话以获取用户名和客户端 IP 地址。 这是一个代码片段。Set objFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
objFarm.Initialize(1)
For Each objSession In objFarm.Sessions
WScript.Echo "User name : " & objSession.UserName
WScript.Echo "IP Address: " & objSession.ClientAddress
Next
您需要是 XenApp(以前称为 Presentation Sever)场上的管理员才能运行 MFCOM 查询。 您可以阅读更多内容并在此处下载 MFCOM 示例。
2. 使用 WFAPI SDK WFEnumerateSessions 方法获取服务器上所有会话的列表,然后使用 WFQuerySessionInformation 提取服务器上每个会话的客户端 IP。我已经编写了一个示例程序来展示如何做到这一点。 点击此链接下载 WFAPI 和 Csharp .Net 程序,该程序枚举服务器上的所有会话及其客户端 IP 地址。
3. 使用本机终端服务 API。 与 WFAPI 类似,使用 TSEnumerateSessions 获取服务器上会话的列表,然后使用 TSQuerySessionInformation 提取服务器上每个会话的客户端 IP 地址。 要阅读更多内容,点击此链接下载终端服务 API 的 Csharp .Net 编写的示例。
4. 您还可以使用 ICO SDK 和 GetClientAddress API 在 ICO 会话中获取客户端 IP。 ICA 客户端对象是一个框架,它将 Citrix ICA Win32 客户端的功能公开给第三方应用程序。 ICA 客户端对象 (ICO) SDK 使开发人员和管理员能够修改 Windows 32 位 Citrix ICA 客户端的行为和外观。 该 SDK 是一系列文档,详细说明了 Citrix ICA 客户端中可用的应用程序编程接口 (API) 点击此链接下载 ICO 示例,该示例演示了如何使用可用的方法和属性来使用 Citrix ICO SDK 获取客户端网络名称和 IP 地址信息。
JavaScript 中 ICO 的代码片段
function GetClientNetworkName(form)
{
form.netname.value = document.ICO1.GetClientNetworkName()
}
function GetAddrCnt(form)
{
form.addrcnt.value = document.ICO1.GetClientAddressCount()
}
function GetAddr(form)
{
form.addr.value = document.ICO1.GetClientAddress(0)
}
历史
如果您对 Citrix MFCOM 有任何疑问,请在我的博客上给我留言
Vishal Ganeriwala