【发布时间】:2018-05-17 21:29:20
【问题描述】:
我对 Citrix 知之甚少,除了(如果我错了,请纠正我)它为 citrix 服务器的每个并发用户运行一个单独的 windows 副本,以及所有应用程序等。
如果将我编写的应用程序部署到 citrix 服务器,有没有办法知道总共有多少用户?例如citrix 可以给我一个客户端工作站或用户帐户的唯一 ID 吗?还是我仅限于检测并发用户?
【问题讨论】:
我对 Citrix 知之甚少,除了(如果我错了,请纠正我)它为 citrix 服务器的每个并发用户运行一个单独的 windows 副本,以及所有应用程序等。
如果将我编写的应用程序部署到 citrix 服务器,有没有办法知道总共有多少用户?例如citrix 可以给我一个客户端工作站或用户帐户的唯一 ID 吗?还是我仅限于检测并发用户?
【问题讨论】:
这有点对,但不是真的。严格来说,它并不是一个完全独立的 Windows 副本。每个用户都有自己的“会话”,这是他们自己在机器上唯一的沙箱,并且有跨会话使用的共享服务。
我要谈论的所有内容都不是 Citrix 特有的。如果您的用户正在 RDP 进入服务器,它也是标准的 Windows 东西。您可以查询许多可能对您有用的状态:
在会话中运行的任何应用都可以查询当前会话的上述状态。但是,如果您想查询在同一台服务器上运行的其他会话的状态,则需要本地管理员权限。因此,如果您想要某种通用机制,允许您的应用程序的任何实例确定服务器上有多少唯一用户,您将不得不做很多工作。
例如创建一些额外的长期服务,您的应用程序的所有实例都会与之交谈以报告它们存在,然后查询以获取当前的唯一用户数。
如果您想获得特定于 Citrix 的信息,可以使用 XenApp Powershell SDK 之类的名称,但根据您要查询的内容,当前用户可能需要在 Citrix 场中获得某种形式的委派管理员权限。
这有点像散弹枪的答案 - 我已经给了你一堆不同的东西来检查。如果没有关于您的用例的更具体信息,就很难深入挖掘更具体的细节。
【讨论】:
HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 中的注册表项仍然会做正确的事情,而不管在 RDP/Citrix/etc 中工作吗?即CURRENT_USER 特定于当前用户,而LOCAL_MACHINE 由物理机的所有用户共享?
您拥有什么版本的 Citrix?您可以查询 EdgeSight(如果是 7.x 之前的版本)或 Director 以获取此类信息,并选择唯一标准来确定用户是否在多个地方(端点 IP 或名称)。通常,如果 Citrix 设置了会话共享,会话将漫游,因此即使用户共享登录名,一次也只能运行一个会话。如果另一个用户使用相同的凭据从另一台计算机登录 Citrix,会话将移至该新端点。
https://edgesightunderthehood.com/ https://wagthereal.com/tag/ms-sql/
【讨论】: