2009-12-15 12 views
3

Je voudrais déterminer, à partir d'une application .NET, si l'utilisateur actuel (de System.Environment.UserName) est connecté physiquement à la machine, ou via des services de terminal.Comment déterminer si l'utilisateur actuel est connecté via les services Terminal Server dans .NET?

Le cas d'utilisation est un lanceur de programme de démarrage. Lorsque je me connecte à ma machine de développement localement, je voudrais normalement démarrer une multitude d'applications automatiquement (Outlook, diverses applications de la zone de notification) mais lorsque j'utilise les services de terminal pour me connecter, cela signifie généralement que je suis en communication et faire face à un problème, et je veux que mon système soit prêt le plus rapidement possible.

Je suppose que c'est possible via WMI mais je ne suis pas familier avec les classes ou les requêtes pour y arriver.

Répondre

7

Vérifiez la SystemInformation.TerminalServerSession propriété

+0

qui est beaucoup plus agréable que la solution que j'allais poster en utilisant p/Invoke –

+1

En fait, cette propriété n'utilise P/Invoke interne ('GetSystemMetrics (SM_REMOTESESSION)' pour être précis) –

+0

jamais même savait que cette classe existait - quelle pléthore d'informations utiles! Merci! –