2014-10-08 60 views
0

對於Citrix而言,我知道得很少(如果我錯了,請糾正我),它爲citrix服務器的每個併發用戶運行單獨的windows副本,以及所有應用程序等。計算Citrix上的獨特用戶?

如果部署我已寫入citrix服務器的應用程序,有什麼辦法可以告訴總共有多少用戶?例如思捷可以給我一個客戶端工作站或用戶帳戶的唯一ID?還是我僅限於檢測併發用戶?

回答

1

這是對的,但不是真的。這不完全是Windows的完全獨立副本。每個用戶都有他們自己的「會話」,這是他們自己的唯一沙箱,並且有跨會話使用的共享服務。

我會談論的所有東西並不是特定於Citrix的。這是Windows標準的東西,如果你的用戶是RDP到服務器,也會適用。有一堆狀態可供您查詢:

  • 會話ID在會話的整個生命週期內都是唯一的(但隨着時間的推移,會話來來去去,ID也被重用) 。這可能不是您的最佳選擇,因爲可以在同一臺服務器上擁有多個會話的用戶。要了解有關此API和其他API的更多信息,請查看遠程桌面服務API:http://msdn.microsoft.com/en-us/library/aa383464(v=vs.85).aspx
  • 您可以查詢當前用戶身份,以便獲取用戶名,域等。只需使用標準身份API即可這個。

運行在會話中的任何應用程序都可以查詢當前會話的上述狀態。但是,如果您想查詢在同一臺服務器上運行的其他會話的狀態,則需要本地管理員權限。因此,如果您想要某種通用機制,允許您的應用程序的任何實例確定服務器上有多少個唯一用戶,那麼您將不得不做大量工作。

E.g.創建一些額外的長期服務,讓您的應用程序的所有實例都會報告它們存在,然後查詢以獲取當前唯一的用戶數。

如果你想獲得特定的Citrix,你可以使用類似於XenApp Powershell SDK的東西,但是根據你想要查詢的內容,當前用戶可能需要某種形式的Citrix場的委託管理權限。

這是一個散射槍的答案 - 我給你了一堆不同的東西來檢查。沒有關於您的用例的更多具體信息,很難挖掘更具體的細節。

+0

這是一個很好的答案,分散槍是我現在需要的。當然,查詢用戶身份的麻煩在於用戶可以通過共享帳戶進行欺騙。有沒有辦法解決?同樣,從你說的話,'HKEY_CURRENT_USER'和'HKEY_LOCAL_MACHINE'中的註冊表鍵仍然會做正確的事情,無論在RDP/Citrix/etc中工作嗎?即'CURRENT_USER'是特定於當前用戶的,而LOCAL_MACHINE'是由物理機器的所有用戶共享的? – 2014-10-09 10:41:26

+1

是的,這些reg reg hives將按預期工作,在RDS/Citrix下運行並不會改變它們的工作方式。完全保護自己免受惡意用戶的侵害是非常困難的。如果用戶共享帳戶對您來說確實是一個問題,那麼您真正可以做的就是統計服務器上的併發會話。 – donovan 2014-10-10 00:09:41