找出哪台计算机远程连接到另一台计算机

时间:2012-01-30 16:42:30

标签: remote-desktop remote-access

我们有一台运行Windows XP专业版的共享计算机,人们使用远程桌面使用一个用户名和密码登录该计算机。 Windows远程桌面的问题在于,当另一个用户登录时,当前用户被踢出他/她的会话。我已经厌倦了这一点,并希望找到一种方法来查看谁登录到该机器,这样每个人都可以互相给对方。

经过一番搜索后,我在使用C#的StackOverflow上找到了解决方案 user-logged-into-remote-machine

但是,由于我们使用相同的用户名和密码登录共享计算机,因此此方法只会告诉我们某人(共享用户名)已登录到远程计算机,而不是谁。是否可以找到连接到共享计算机的计算机的名称?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用本机Win32 API获取此信息(请参阅WTSQuerySessionInformation)。如果您使用的是.NET语言,则可以使用Cassia library,它包装本机API并使其更易于使用。

使用Cassia,你可以这样写:

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并重新启动,然后才能执行此操作。