Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terminal Services: Get Client Name While Running As Administrator

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"?

like image 606
Kevin Fairchild Avatar asked Sep 05 '25 16:09

Kevin Fairchild


2 Answers

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
like image 112
Dan Ports Avatar answered Sep 07 '25 18:09

Dan Ports


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.

like image 38
Chris Tybur Avatar answered Sep 07 '25 17:09

Chris Tybur