2010-07-15 2 views
5

Мне нужно получить имя пользователя, который зарегистрировал конкретную машину в моей локальной сети. Предложите мне лучший способ получить имя пользователя, передав имя машины в приложении C# .net windows. Также рассмотрите разрешение.C# .Net Приложение Windows - Получение имени пользователя в My NT

Благодаря

ответ

2

Привет Все, что я получил решение для моего вопроса. Я использовал WMI для получения имени пользователя.

try { 
    object[] objArr = new object[2]; 
    ManagementScope ms = new ManagementScope("Path"); 
    ms.Connect(); 
    if (ms.IsConnected) 
    { 
     ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_Process WHERE Name='explorer.exe'"); 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(ms, Query); 
     foreach(ManagementObject objQuery in searcher.Get()) 
     { 
      objQuery.InvokeMethod("GetOwner", objArr); // objArr[0] contains the userId and objArr[1] contains Domainname 
      userName = Convert.ToString(objArr[0]); 
     } 
    } 
} 
catch (System.Exception ex) 
{ 
    throw ex; 
} 

Благодаря

0

Как я понимаю, вы хотите, чтобы удаленно определить имя пользователя людей вошли на многих ПК и представить результаты в приложение под управлением Windows Forms.

Windows не имеет встроенного механизма для перечисления этой информации.

Какой бы механизм вы в конечном счете не использовали, вам, вероятно, потребуется запустить приложение сканирования под учетной записью пользователя, которая имеет права администратора на сканируемом ПК.

Возможно, вы решили эмулировать поведение команды SysInternals PsLoggedOn, которая проверяет ключ HKEY_USERS на удаленном компьютере. Чтобы узнать, кто подключен к ПК (т. Е. Обращается к общим ресурсам), используйте API NetSessionEnum.

Более подробную информацию о PsLoggedOn можно найти здесь: link text

+0

да, я хочу второй вариант «Вы хотите удаленно определить имя пользователя для входа во многие компьютеры и представить результаты в приложении Windows Forms?» – Sarathy

16
//How about this: 
string strUserName = WindowsIdentity.GetCurrent().Name; 

Вы можете делать все, что вы хотите сделать с этой переменной "strUserName". Обратите внимание, что оно также содержит Доменное имя, если оно присутствует.

Смежные вопросы