|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Всем привет. Вопрос такой: как получить список компов и залогиненных на этих компах пользователей. Другими словами, есть комп и есть человек, который на нем работает. Получить список пользователей через UserPrincipal могу, получить список компов через ComputerPrincipal тоже могу, а вот соединить их между собой не получается. Прошу помощи. Список пользователей Active Directory. С компами тоже самое, только меняем UserPrincipal на ComputerPrincipal. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 08:39 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
базовыми средствами ActiveDirectory сделать это нельзя. есть 2 пути: а) ты подключаешься к каждому компьютеру и проверяешь список активный сессий (на 1 компьютере могут работать несколько пользователей, особенно если это сервер терминалов) б) создаешь скрипт на вход и выход из системы, которые будет делать соответствующие записи в AD (в созданное или существующее в схеме поле), а дальше делать реализацию через эти поля. Тут собственно тоже масса подводных камней, так как нет ни каких гарантий, что сессия завершится корректно и что при включении компьютера в момент выполнения скрипта сеть и каталог LDAP будут доступны. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 09:19 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Roman Mejtesа) ты подключаешься к каждому компьютеру и проверяешь список активный сессий (на 1 компьютере могут работать несколько пользователей, особенно если это сервер терминалов) это случайно не WMI? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 09:28 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlcRoman Mejtesа) ты подключаешься к каждому компьютеру и проверяешь список активный сессий (на 1 компьютере могут работать несколько пользователей, особенно если это сервер терминалов) это случайно не WMI? Да хоть через WMI, хоть напрямую через удаленное чтение реестра. Есть еще один способ - разрешить пользователям входить только с определенного компьютера, но он тоже может принести много гемороя ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 09:40 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Cat2Да хоть через WMI, хоть напрямую через удаленное чтение реестра. Попробовал оба. Спасибо за заданное направление. Прикладываю решение. WMI Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
read Remote Registry. У удаленного компа должна быть включена служба Удаленный Реестр Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
P.S. Чтобы получить инфу нужно иметь соответствущие права. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 14:14 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlc, Еще, как оказалось, можно попробовать через чтение Security Event log. Правда пока не понятно, что именно я должен искать в этом логе. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 14:26 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlc, логи могут быть ооооооочень большими, читать их как по мне нерационально. у меня на рабочем компе бывало даже такое, что Securety лог на компе переполнялся и нельзя было после этого зайти на комп ^_^ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 14:54 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlc, 1. На Wundows XP нет раздела "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI". Кусочек моего говнокода. Следующая функция вычисляет SID текущего пользователя. Если пользователей несколько залогинилось - берет интерактивного. Если таких несколько - берет первого попавшегося который залогинился интерактивно. Ну и куча перестраховок, потому что функция должна вернуть хоть что-то и не сгенерировать ошибку. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
2. string machineName = Environment.MachineName - это имя машины с которой запускается программа, а не той которую надо смотреть. 3. "SELECT LogonId FROM Win32_LogonSession Where LogonType = 2" . Мне несколько раз попадалось, что у нормального интерактивного доменного пользователя был LogonType = 9. Лучше UserName из Win32_ComputerSystem. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 16:16 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlcЕще, как оказалось, можно попробовать через чтение Security Event log. Долго очень, особенно если пользователь в пятницу машину не выключал, а в понедельник к ней не притрагивался ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 16:29 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Cat2mlcЕще, как оказалось, можно попробовать через чтение Security Event log. Долго очень, особенно если пользователь в пятницу машину не выключал, а в понедельник к ней не притрагивался пфффф :) да я комп на работе вообще не выключаю, пока сам не зависнет :) а вообще, вроде блокировка и разблокировка так же в Securety Log логируется или логирует при определенных настройках, точно уже не помню, но это точно можно врубить. но идея с логами говно при любом раскладе, очень тормозно будет работать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 18:29 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Roman Mejtesвроде блокировка и разблокировка так же в Securety Log логируется Да. Сработал переход в спящий режим - вышел из системы. Нажал на клавишу - вошел. Даже если не настроен вход после блокировки с паролем. Там казалось бы все просто. Ловим код события - вход. Ловим код входа - интерактивно. Однако меня смутила фраза, которую я прочитал в доке от Микрософта, что коды входа уникальны на одной машине, но могут повторятся на другой. Я так понял, что коды входа каждая машина генерит произвольно! То есть нельзя найти число, которое будет кодом входа интерактивного пользователя на всех машинах. ======== В поиске пользователя и диагностикуе ПК вообще ловушек море. 10% машин имеют неработоспособный WMI. Ну да ладно, есть способы его наладить. Правда в 1% случаев для этого надо переустановить ось с нуля. Мне и команде так и не удалось найти способ, который бы восстанавливал бы WMI всегда. Так же для удаленного доступа через WMI нужно что бы был открыт 135 порт и разрешен вsзов через RPC. Вы, конечно, молодец, чо определили что для работы через реестр нужны соответсвующие права на машине и запущена служба "Удаленный доступ к реестру". Это правильно! Но кроме того должен быть открыт 445 порт и запущена служба "Сервер". Да и права на машине могут быть перекрыты явным запретом читать ветвь реестра всем Администраторам. Бывает и такое. Чего только не бывает! Любая гадость, которая может случится , обязательно случиться! Вплоть до повреждения ветвей реестра, который вроде должен храниться как зеница ока. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 20:05 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Cat2, как по мне, проще накидать сервис на 2 строки, который каждые 5 минут будет писать в базу или АД, информацию о том, кто на компе работает или на каком компе пользователь работает и дату записи, если дата больше 5 минут, данные не актуальны. При таком варианте пользовательский ПК выступает в роли клиента, а не в роли сервера, следовательно все выше перечисленные проблемы отпадают, за исключением конечно проблемы установки самого сервиса, которая решается через GPO ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 20:30 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Roman MejtesCat2, как по мне, проще накидать сервис на 2 строки, который каждые 5 минут будет писать в базу или АД, информацию о том, кто на компе работает или на каком компе пользователь работает и дату записи, если дата больше 5 минут, данные не актуальны. При таком варианте пользовательский ПК выступает в роли клиента, а не в роли сервера, следовательно все выше перечисленные проблемы отпадают, за исключением конечно проблемы установки самого сервиса, которая решается через GPO Увы. На моих 300 000 компов от Сахалина до Калининграда этот прекрасный способ не прокатывает. Если бы мне дали полную волю, то я бы повесил политиками логонный скрипт, который бы писал в АД. Как об этом и говорил в самом начале - Roman Mejtesб) создаешь скрипт на вход и выход из системы, которые будет делать соответствующие записи в AD (в созданное или существующее в схеме поле), а дальше делать реализацию через эти поля. Тут собственно тоже масса подводных камней, так как нет ни каких гарантий, что сессия завершится корректно и что при включении компьютера в момент выполнения скрипта сеть и каталог LDAP будут доступны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 20:56 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Roman Mejtes, про Security log уже убедился, когда начал долбать компы пользователей. Не вариант. Cat210% машин имеют неработоспособный WMI. Ну да ладно, есть способы его наладить. Правда в 1% случаев для этого надо переустановить ось с нуля. Мне и команде так и не удалось найти способ, который бы восстанавливал бы WMI всегда.Cat2, и с этим тоже уже успел столкнулся. Я так понимаю нет универсального способа. Ни реестр, ни wmi не дает 100% гарантии. Cat2Если бы мне дали полную волю, то я бы повесил политиками логонный скрипт, который бы писал в АД.А можно поподробнее, чтобы я смог объяснить админам, что от них хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 08:39 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2016, 10:38 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
mlcА можно поподробнее, чтобы я смог объяснить админам, что от них хочу. В домене с помощью групповых политик можно сделать так, что при входе пользовался запускался некий скрипт. Вернее это может быть не обязательно скрипт, но и консольная программа. http://www.winblog.ru/win2003/1147763440-06020701.html Данный скрипт должен запускаться от имени пользователя, иначе его имя получить не получится. Далее простор для творчества. Можно записать имя пользователя в локальный файл, в свою ветку реестра или в описание компьютера. Разумеется должны быть соответствующие права. Но лучше писать юзеру его комп или наоборот в AD Разумеется должны быть делегированы соответствующие права. http://www.osp.ru/win2000/2011/05/13009842/ Прав можно давать в другом логонном скрипте, который запускается после логина юзера. Первый раз ему ничего записать не удасться, но при следующем логине все будет нормально. ================= Еще вспомнил 1. Есть такая утилита bgInfo, которая запускается политиками много чего интересного пишет в XLS-файл, который хранится в профиле пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 10:30 |
|
Active directory список пользователей и компов
|
|||
---|---|---|---|
#18+
Cat2mlcА можно поподробнее, чтобы я смог объяснить админам, что от них хочу. В домене с помощью групповых политик можно сделать так, что при входе пользовался запускался некий скрипт. Вернее это может быть не обязательно скрипт, но и консольная программа. http://www.winblog.ru/win2003/1147763440-06020701.html Данный скрипт должен запускаться от имени пользователя, иначе его имя получить не получится. Далее простор для творчества. Можно записать имя пользователя в локальный файл, в свою ветку реестра или в описание компьютера. Разумеется должны быть соответствующие права. Но лучше писать юзеру его комп или наоборот в AD Разумеется должны быть делегированы соответствующие права. http://www.osp.ru/win2000/2011/05/13009842/ Прав можно давать в другом логонном скрипте, который запускается после логина юзера. Первый раз ему ничего записать не удасться, но при следующем логине все будет нормально. ================= Еще вспомнил 1. Есть такая утилита bgInfo, которая запускается политиками много чего интересного пишет в XLS-файл, который хранится в профиле пользователя. большая часть полей для класса пользователь открыты для обладателя на запись. То есть, сам пользователь в рамках своей учётки, может менять значение атрибутов (в зависимости от прав в схеме. конечно же). По этому, проще записывать имя компа в объект пользователя (user;person), а не имя пользователь в объекты ПК. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 22:26 |
|
|
start [/forum/topic.php?fid=20&msg=39232991&tid=1400597]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 136ms |
0 / 0 |