¿Cómo obtengo el nombre de usuario actual conectado en Windows 7 (es decir, el usuario que está físicamente conectado a la consola en la que se ejecuta el programa que estoy iniciando).Obtener el nombre de usuario conectado en C#
Por ejemplo, si estoy conectado como "Usuario principal" y ejecuto mi aplicación de consola (que mostrará el nombre de usuario conectado) como "Usuario secundario", entonces el programa solo devuelve "Usuario secundario" como el usuario actualmente conectado.
Utilicé las siguientes 2 técnicas para obtener el nombre de usuario. Ambos no me están dando lo que quiero.
System.Environment.GetEnvironmentVariable("USERNAME")
System.Security.Principal.WindowsIdentity.GetCurrent().User;
Tenga en cuenta que, sin embargo, este código VBScript devuelve el nombre de usuario conectado con independencia de la cuenta de usuario desde el que se ejecuta este script:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set compsys_arr = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each sys in compsys_arr
Wscript.Echo "username: " & sys.UserName
Next
Cualquier forma es posible en C#?
Compruebe http://forums.whirlpool.net.au/archive/793434. Supongo que podría cambiar el código para que se ajuste exactamente a su VBScript. – weismat
Ese VBScript no funciona para mí (ejecutándose contra un servidor Win2003). Además, si el usuario ha elegido ejecutar su programa en una cuenta de usuario diferente, * ¿por qué * desea ignorarlo? –
@Damien, necesito tomar decisiones en el programa en función del usuario que ha iniciado sesión, ¡por eso! – Santhosh