2008-11-12 92 views
2

在正常情況下,我的VB.NET應用程序可以檢查ClientName環境變量以獲取用戶所連接的工作站的名稱。終端服務:以管理員身份運行時獲取客戶端名稱

所以當WorkstationX RDPS爲服務器A:

  • 計算機名=服務器A
  • CLIENTNAME = WorkstationX

這工作正常。

如果我右鍵單擊該應用程序並選擇以管理員身份運行,則ClientName變量未設置。

有沒有人知道如何輕鬆獲取連接到終端服務器的客戶端的工作站名稱,即使應用程序是通過「以管理員身份運行」啓動的?

回答

2

terminal services API可能是您的答案。我在VB.NET應用程序中使用它來註銷給定服務器上的用戶會話,並檢索連接到這些會話的工作站的名稱。我的代碼有很多p-invoke東西,而且很笨拙,但是如果你願意,我可以發佈它。

+0

我認爲我會需要使用WTSQuerySessionInformation去的價值的WTSClientName,但還沒有找到任何干淨的例子。 – 2008-11-14 13:54:00

2

如果你不想處理的P/Invoke企業自己,你可以使用Cassia,來包裝它爲您提供:

New Cassia.TerminalServicesManager().CurrentSession.ClientName 
相關問題