【问题标题】:Counting unique users on Citrix?计算 Citrix 上的唯一用户?
【发布时间】:2018-05-17 21:29:20
【问题描述】:

我对 Citrix 知之甚少,除了(如果我错了,请纠正我)它为 citrix 服务器的每个并发用户运行一个单独的 windows 副本,以及所有应用程序等。

如果将我编写的应用程序部署到 citrix 服务器,有没有办法知道总共有多少用户?例如citrix 可以给我一个客户端工作站或用户帐户的唯一 ID 吗?还是我仅限于检测并发用户?

【问题讨论】:

    标签: licensing citrix


    【解决方案1】:

    这有点对,但不是真的。严格来说,它并不是一个完全独立的 Windows 副本。每个用户都有自己的“会话”,这是他们自己在机器上唯一的沙箱,并且有跨会话使用的共享服务。

    我要谈论的所有内容都不是 Citrix 特有的。如果您的用户正在 RDP 进入服务器,它也是标准的 Windows 东西。您可以查询许多可能对您有用的状态:

    • 会话 ID 在会话的整个生命周期内都是唯一的(但是随着时间的推移,会话来来去去,并且 ID 会被重新使用)。这可能不是您的最佳选择,因为可能有一个用户在同一服务器上具有多个会话。要了解有关此 API 和其他 API 的更多信息,请查看远程桌面服务 API:http://msdn.microsoft.com/en-us/library/aa383464(v=vs.85).aspx
    • 您可以查询当前用户身份,因此您将获得用户名、域等。只需使用标准身份 API 即可。

    在会话中运行的任何应用都可以查询当前会话的上述状态。但是,如果您想查询在同一台服务器上运行的其他会话的状态,则需要本地管理员权限。因此,如果您想要某种通用机制,允许您的应用程序的任何实例确定服务器上有多少唯一用户,您将不得不做很多工作。

    例如创建一些额外的长期服务,您的应用程序的所有实例都会与之交谈以报告它们存在,然后查询以获取当前的唯一用户数。

    如果您想获得特定于 Citrix 的信息,可以使用 XenApp Powershell SDK 之类的名称,但根据您要查询的内容,当前用户可能需要在 Citrix 场中获得某种形式的委派管理员权限。

    这有点像散弹枪的答案 - 我已经给了你一堆不同的东西来检查。如果没有关于您的用例的更具体信息,就很难深入挖掘更具体的细节。

    【讨论】:

    • 这是一个很好的答案,散弹枪是我现在需要的。当然,查询用户身份的麻烦在于用户可以通过共享帐户来作弊。有没有办法解决?同样从您所说的来看,HKEY_CURRENT_USERHKEY_LOCAL_MACHINE 中的注册表项仍然会做正确的事情,而不管在 RDP/Citrix/etc 中工作吗?即CURRENT_USER 特定于当前用户,而LOCAL_MACHINE 由物理机的所有用户共享?
    • 是的,这些 reg 配置单元将按预期工作,在 RDS/Citrix 下运行不会改变它们的工作方式。完全保护自己免受恶意用户的侵害非常困难。如果用户共享帐户对您来说确实是个问题,那么您真正能做的就是计算服务器上的并发会话数。
    【解决方案2】:

    您拥有什么版本的 Citrix?您可以查询 EdgeSight(如果是 7.x 之前的版本)或 Director 以获取此类信息,并选择唯一标准来确定用户是否在多个地方(端点 IP 或名称)。通常,如果 Citrix 设置了会话共享,会话将漫游,因此即使用户共享登录名,一次也只能运行一个会话。如果另一个用户使用相同的凭据从另一台计算机登录 Citrix,会话将移至该新端点。

    https://edgesightunderthehood.com/ https://wagthereal.com/tag/ms-sql/

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多