在正常情况下,我的VB.NET应用程序可以检查ClientName环境变量以获取用户连接的工作站的名称。
所以当WorkstationX RDP进入ServerA时:
工作正常。
如果我右键单击该应用程序并选择“以管理员身份运行”,则不会设置ClientName变量。
有没有人知道如何轻松获取连接到终端服务器的客户端的工作站名称,即使应用程序是通过“以管理员身份运行”启动的?
答案 0 :(得分:2)
terminal services API可能是您的答案。我在VB.NET应用程序中使用它来注销给定服务器上的用户会话,并检索连接到这些会话的工作站的名称。我的代码有很多p-invoke的东西,而且相当笨拙,但如果你愿意,我可以发布它。
答案 1 :(得分:2)
如果您不想自己处理P / Invoke业务,可以使用Cassia,它会为您包装:
New Cassia.TerminalServicesManager().CurrentSession.ClientName