Получить имя вошедшего в систему пользователя в C #

Как мне получить текущее имя пользователя, вошедшего в систему в Windows 7 (т.е. пользователя, который физически вошел в консоль, на которой запущена программа, которую я запускаю).

Например, если я вошел в систему как «MainUser» и запустил мое консольное приложение (которое будет отображать имя вошедшего в систему пользователя) как «SubUser», тогда программа вернет только «SubUser» как текущий зарегистрированный пользователь.

Я использовал следующие 2 метода, чтобы получить имя пользователя. И то, и другое не дает мне того, что я хочу.

System.Environment.GetEnvironmentVariable("USERNAME")
System.Security.Principal.WindowsIdentity.GetCurrent().User;

Обратите внимание, что, однако, этот код VBScript возвращает имя пользователя, вошедшего в систему, независимо от учетной записи, из которой запускается этот скрипт:

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

Каким-либо образом это возможно в C #?

9
задан Santhosh 28 October 2010 в 06:21
поделиться