Можно ли как-нибудь получить имя пользователя под которым был произведен вход в систему, если же приложение запускается под другим именем?
Т.е. входит в систему(логинится) пользователь ivanov, запускает мое приложение используя учетные данные(логин и пароль) пользователя petrov.
Можно ли как-то узнать что в системе именно ivanov.
Environment.UserName
и
System.Security.Principal.WindowsIdentity.GetCurrent().Name
дают одинаковый результат - petrov.
Ответ
Вот пример, который получает логин пользователя который зашел в систему.
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
if (returnVal == 0)
{
// return DOMAIN\user
return argList[1] + "\\" + argList[0];
}
}
return "NO OWNER";
}
Комментариев нет:
Отправить комментарий