Under normal circumstances, a VB.NET application of mine can check the ClientName environmental variable to get the name of the workstation the user is connecting from.
So when WorkstationX RDPs into ServerA:
- ComputerName=ServerA
- ClientName=WorkstationX
That works fine.
If I right-click on the application and choose Run As Administrator, the ClientName variable is not set.
Does anyone know of a way of easily getting the workstation name of the client connected to the terminal server, even when the application is launched via "Run As Administrator"?
-
The terminal services API might be your answer. I use it in a VB.NET app to log off user sessions on a given server, and to retrieve the names of the workstations connected to those sessions. The code I have has a lot of p-invoke stuff and is rather unwieldy, but I can post it if you want.
Kevin Fairchild : I assumed I would need to use WTSQuerySessionInformation to get to the value of WTSClientName, but haven't found any clean examples of doing so yet.Chris Tybur : Clean as in working, or as in straightforward?Kevin Fairchild : Clean as in working and minimal use of sketchy calls using ported VB6 code ;) -
If you don't want to deal with the P/Invoke business yourself, you can use Cassia, which wraps it for you:
New Cassia.TerminalServicesManager().CurrentSession.ClientName
0 comments:
Post a Comment