Как получить «основного» пользователя удаленного компьютера - PullRequest
2 голосов
/ 23 сентября 2011

Мне нужно знать, как получить имя и домен основного пользователя компьютера, удаленно.Я определяю основного пользователя предпочтительно как пользователя, вошедшего в систему в большинстве случаев, или самое продолжительное время за период.В качестве альтернативы, если это невозможно, так как пользователь в настоящее время / последний входил в систему.

В настоящее время я сканирую Active Directoy для всех компьютерных объектов в OU.Затем я зацикливаюсь на них и пытаюсь получить имя пользователя с помощью WMI.Я смотрю в Win32_ComputerSystem, чтобы увидеть, если UserName возвращает значение.Если это не так, я смотрю в Win32_LogonSession и получаю имя пользователя для всех LogonTypes, равное 2 или 10. Если это не возвращает ни одного, или нескольких значений, я отбрасываю результат и смотрю в Win32_Process для всех несистемныхобрабатывает и определяет основного пользователя как пользователя с большинством запущенных процессов.

В моем подходе есть несколько проблем:

  1. Win32_ComputerSystem - UserName часто имеет значение null.
  2. Win32_LogonSession часто возвращают несколько значений или не имеют значений.Может быть только 1 основной пользователь.
  3. Просмотр Win32_Process является довольно нелепым, поскольку это вернет мне пользователя с большинством процессов, скорее всего, не основного пользователя.
  4. Если нетпользователь в настоящее время вошел в систему, просматривая Win32_Process не возвращает значения, и ни один из 3 шагов не может вернуть значение.

Мои 3 подхода могут получить меня в качестве текущего пользователя.Кто-нибудь знает способ получить основного пользователя?Или, по крайней мере, лучший способ получить ток.Не обязательно использовать WMI.

Спасибо

1 Ответ

0 голосов
/ 08 августа 2012

Если у вас есть права администратора на удаленном компьютере и общий доступ Вы можете использовать управление компьютером и выберите подключитесь к другому компьютеру и посмотрите, какие пользователи и группы находятся на этом компьютере. Или вы можете использовать TS Remote Administration или Remote Desktop, если удаленный компьютер имеет такую ​​возможность.

Используйте psexec.exe (www.sysinternals.com) для запуска команд на удаленном компьютере:

psexec \\pc1 net user | find /i "Steve" 
psexec \\pc1 c:\tool\psloggedon | find /i "Steve" 

1) Найдите, есть ли у Джона Блэка учетная запись на ПК1.

2) Найти, если он в данный момент вошел в систему. Используйте psloggedon.exe, чтобы использовать другой инструмент SysInternals.

Проверьте это также: http://www.wisesoft.co.uk/scripts/vbscript_display_username_of_user_on_a_remote_computer.aspx

Также, если вы хотите найти имя пользователя текущего зарегистрированного пользователя на удаленном компьютере, используя IP-адрес удаленного компьютера, перейдите в командную строку типа nbtstat -A <IP of remote computer> Это вернет все имена NetBIOS, зарегистрированные на компьютере одним из которых является имя пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...