2010-11-23 13 views
17

No hay realmente ninguna razón de peso para que me haga esta pregunta aparte de la curiosidad - usando C#, ¿hay alguna manera de determinar a partir de los códigos qué usuario mi proceso se está ejecutando como? Para ilustrar el uso de código:Determinar desde el código de qué usuario mi proceso se está ejecutando como

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)); 
} 

Respuesta

35
string userID = WindowsIdentity.GetCurrent().Name 

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

+1

Y esto no solo hace que me inicie sesión como, ¿devolvería LOCAL SYSTEM o NETWORK SERVICE o similar si el proceso se ejecutara en una de esas cuentas? – Zannjaminderson

+5

Environment.UserName es el atajo más convencional para esto, creo. –

+2

@Zann, eso es correcto, devuelve la identidad del proceso, no la cuenta de usuario que ha iniciado sesión, aunque pueden ser iguales o no serlo. Devolverá correctamente el SISTEMA LOCAL o el SERVICIO DE RED, por ejemplo, en un proceso típico de trabajo de IIS. @Hans: OP pidió la identidad del proceso, no el usuario actual que inició sesión en la consola/sesión (¡aunque pueden ser lo mismo!) –

1

Hay una variedad de maneras, dependiendo de qué tipo de aplicación que se está ejecutando.

Here's an article sobre el uso del hilo principal para comprobar los datos de usuario/autorización.

This thread contiene un par de otros enfoques, aunque no mucha elaboración.

1

cadena UserID = Environment.UserName;

Cuestiones relacionadas