在正常情况下,我的VB.NET应用程序可以检查ClientName环境变量以获取用户所连接的工作站的名称。终端服务:以管理员身份运行时获取客户端名称
所以当WorkstationX RDPS为服务器A:
- 计算机名=服务器A
- CLIENTNAME = WorkstationX
这工作正常。
如果我右键单击该应用程序并选择以管理员身份运行,则ClientName变量未设置。
有没有人知道如何轻松获取连接到终端服务器的客户端的工作站名称,即使应用程序是通过“以管理员身份运行”启动的?
在正常情况下,我的VB.NET应用程序可以检查ClientName环境变量以获取用户所连接的工作站的名称。终端服务:以管理员身份运行时获取客户端名称
所以当WorkstationX RDPS为服务器A:
这工作正常。
如果我右键单击该应用程序并选择以管理员身份运行,则ClientName变量未设置。
有没有人知道如何轻松获取连接到终端服务器的客户端的工作站名称,即使应用程序是通过“以管理员身份运行”启动的?
terminal services API可能是您的答案。我在VB.NET应用程序中使用它来注销给定服务器上的用户会话,并检索连接到这些会话的工作站的名称。我的代码有很多p-invoke东西,而且很笨拙,但是如果你愿意,我可以发布它。
如果你不想处理的P/Invoke企业自己,你可以使用Cassia,来包装它为您提供:
New Cassia.TerminalServicesManager().CurrentSession.ClientName
我认为我会需要使用WTSQuerySessionInformation去的价值的WTSClientName,但还没有找到任何干净的例子。 – 2008-11-14 13:54:00