#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"; }
Комментариев нет:
Отправить комментарий