我们有一台运行Windows XP专业版的共享计算机,人们使用远程桌面使用一个用户名和密码登录该计算机。 Windows远程桌面的问题在于,当另一个用户登录时,当前用户被踢出他/她的会话。我已经厌倦了这一点,并希望找到一种方法来查看谁登录到该机器,这样每个人都可以互相给对方。
经过一番搜索后,我在使用C#的StackOverflow上找到了解决方案 user-logged-into-remote-machine
但是,由于我们使用相同的用户名和密码登录共享计算机,因此此方法只会告诉我们某人(共享用户名)已登录到远程计算机,而不是谁。是否可以找到连接到共享计算机的计算机的名称?非常感谢你。
答案 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并重新启动,然后才能执行此操作。