65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (7投票s)

2008年5月5日

BSD

2分钟阅读

viewsIcon

105616

downloadIcon

1873

如何获取 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

http://community.citrix.com/blogs/citrite/vishalg/

© . All rights reserved.