Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Как получить имя пользователя C#

#c_sharp #net


Можно ли как-нибудь получить имя пользователя под которым был произведен вход в систему,
если же приложение запускается под другим именем?

Т.е. входит в систему(логинится) пользователь ivanov, запускает мое приложение используя
учетные данные(логин и пароль) пользователя petrov. 
Можно ли как-то узнать что в системе именно ivanov.

Environment.UserName


и

System.Security.Principal.WindowsIdentity.GetCurrent().Name


дают одинаковый результат - petrov.
    


Ответы

Ответ 1



Вот пример, который получает логин пользователя который зашел в систему. private static string _username; static void Main(string[] args) { foreach (var p in Process.GetProcessesByName("explorer")) { _username = GetProcessOwner(p.Id); } // remove the domain part from the username var usernameParts = _username.Split('\\'); _username = usernameParts[usernameParts.Length - 1]; Console.WriteLine(_username); Console.ReadLine(); } public static string GetProcessOwner(int processId) { var query = "Select * From Win32_Process Where ProcessID = " + processId; ManagementObjectCollection processList; using (var searcher = new ManagementObjectSearcher(query)) { processList = searcher.Get(); } foreach (var mo in processList.OfType()) { object[] argList = { string.Empty, string.Empty }; var returnVal = Convert.ToInt32(mo.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { // return DOMAIN\user return argList[1] + "\\" + argList[0]; } } return "NO OWNER"; }

Комментариев нет:

Отправить комментарий