2010-11-23 5 views
17

Il n'y a vraiment aucune raison impérieuse pour moi de poser cette question autre que la curiosité - en utilisant C#, est-il possible de déterminer à partir du code quel utilisateur fonctionne mon processus? Pour illustrer en utilisant le code:Déterminez à partir du code quel utilisateur mon processus exécute comme

static void Main(string[] args) 
{ 
    string userID; 
    //what goes here to fill in this userID variable? 
    Console.out.WriteLine(string.Format("This process is running as {0}.", userID)); 
} 

Répondre

35
string userID = WindowsIdentity.GetCurrent().Name 

De MSDN: WindowsIdentity.GetCurrent() et WindowsIdentity.Name

+1

Et cela ne se contente pas de savoir à qui je suis connecté, il renvoie LOCAL SYSTEM ou NETWORK SERVICE ou similaire si le processus s'exécutait sous l'un de ces comptes? – Zannjaminderson

+5

Environment.UserName est le raccourci le plus classique pour cela, je pense. –

+2

@Zann, c'est exact, il retourne l'identité du processus, pas le compte d'utilisateur qui est connecté, même si elles peuvent être les mêmes ou ils ne peuvent pas être. Il retournera correctement LOCAL SYSTEM ou NETWORK SERVICE, par exemple, dans un processus de travail IIS typique. @Hans: OP a demandé l'identité du processus, pas l'utilisateur actuel connecté à la console/session (bien qu'ils puissent être les mêmes!) –

1

Il existe une variété de façons, selon le type d'application que vous utilisez.

Here's an article sur l'utilisation du thread principal pour vérifier les données utilisateur/autorisation.

This thread contient quelques autres approches, mais pas beaucoup d'élaboration.

1

chaîne ID utilisateur = Environnement.Utilisateur;

Questions connexes