2012-01-30 202 views
1

我們有一臺運行windows xp professional的共享機器,人們使用遠程桌面使用一個用戶名和密碼登錄到該機器。 Windows遠程桌面的問題在於,當其他用戶登錄時,當前用戶將被踢出他/她的會話。我已經非常厭倦了這一點,並希望找到一種方法來查看誰登錄到該機器,以便每個人都可以互相提供一個平板電腦。找出哪臺電腦遠程連接到另一臺電腦

經過一番搜索,我發現在計算器上的解決方案,使用C# user-logged-into-remote-machine

然而,由於我們使用相同的用戶名和密碼登錄到共享的機器,這種方法只會告訴我們,一個人(共同用戶名)登錄到遠程計算機,但不是誰。是否有可能找出連接到共享機器的計算機的名稱?非常感謝你。

回答

0

您可以使用本地Win32 API獲取此信息(請參閱WTSQuerySessionInformation)。如果你使用的是.NET語言,你可以使用Cassia library,它包裝了原生API,使它更容易使用。

使用決明子,你可以寫這樣的事情:

var manager = new TerminalServicesManager(); 
using (var server = manager.GetRemoteServer("server-name-here")) 
{ 
    server.Open(); 
    foreach (var session in server.GetSessions()) 
    { 
     if (session.ConnectionState == ConnectionState.Active) 
     { 
      Console.WriteLine(session.ClientName); 
     } 
    } 
} 

需要注意的是,如果你想用這個API遠程訪問Windows XP的機器,你將需要設置,然後才能將AllowRemoteRPC registry key並重新啓動這樣做。

+0

我試過這個解決方案,但在server.GetSessions()處得到一個Access Denied異常。我認爲這可能與我們的服務器設置方式有關。我曾經做過WTSQuerySessionInformation,確實很麻煩。我喜歡Cassia。謝謝您的幫助。 – steveya 2012-07-23 20:09:07

+0

沒問題。對於拒絕訪問錯誤:請檢查您的防火牆設置(服務器必須允許TCP端口445上的傳入RPC連接)和[遠程桌面權限](http://technet.microsoft.com/zh-cn/library/cc753032)。 – 2012-07-25 15:40:29

相關問題