|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Windows 7 x64; Компьютер в домене; .NET Framework 4.0. Требуется проверить статус доменной учётной записи: заблокирована или нет. Использую код, помеченный в качестве ответа здесь . Проверяю код на двух записях: заблокированной и не заблокированной. Статус заблокированной записи предварительно подтвердили администраторы. На всякий случай я попробовал зайти под заблокированной учёткой и получил сообщение, что мол аккаунт отключен, обратитесь к администрации, так что одна из записей 100% заблокирована. Код: 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.
Однако по факту для обоих записей обозначенный код выдаёт идентичный результат - мол они обе не заблокированы... В качестве аккаунта указывал значение UserPrincipal.SamAccountName . Аккаунты уникальны в рамках домена. Меня интересуют два вопроса: 1. Почему я получаю неверный результат? 2. Как получить правильный результат? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 15:14 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Compositum, ADS_UF_ACCOUNTDISABLE и ADS_UF_LOCKOUT - это два разных флага атрибута User-Account-Control учетки AD. Вас интересует состояние именно locked out, или всё-таки enabled? Если второе - то надо использовать AuthenticablePrincipal.Enabled (от которого UserPrincipal наследует аналогичное). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 15:37 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Спасибо! AuthenticablePrincipal.Enabled - то, что нужно! А какому свойству это соответствует в LDAP-запросе? А то если вызывать в цикле код Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
то на это уходит ОЧЕНЬ много времени.... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 15:58 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Compositum, это соответсвует проверке (userAccountControl & 2)=2 (если true, то учетка заблокирована) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 16:21 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Ещё раз спасибо! Заменил предыдущий код на такой: Код: c# 1. 2. 3. 4. 5.
Теперь информация извлекается за 1 секунду вместо 18-ти. Благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 16:45 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Вы не в курсе, как в LDAP запросе получить разрядность операционной системы компьютера (x86 или x64)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 17:14 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
CompositumСон Веры Павловны, Вы не в курсе, как в LDAP запросе получить разрядность операционной системы компьютера (x86 или x64)? зайдите в оснастку Users & Computers, откройте компьютер на редактирование, зайдите во вкладку Attribute Editor, поставьте галочку "Show only exist values" или как то так. Изучайте. если с оснасткой проблема, есть еще одна AdsiEdit она идет в комплекте с виндой, но непредустановлена, найти можно в компонентах через Win+R => appwiz.cpl => Enter ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 17:23 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
CompositumСон Веры Павловны, Вы не в курсе, как в LDAP запросе получить разрядность операционной системы компьютера (x86 или x64)? Я сомневаюсь, что это вообще можно получить - из известных мне трех атрибутов учетки компьютера, содержащих сведения об ОС (Operating-System, Operating-System-Hotfix, Operating-System-Service-Pack) ни один не содержит сведений о разрядности ОС. Думаю, тут нужно смотреть в сторону remote WMI. И да, если вам нужно определять заблокированность/незаблокированность учетной записи не в цикле, а задавать как условие LDAP-запроса, то изучите вот это (эти фильтры вполне применимы для DirectorySearcher). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 17:42 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Сон Веры Павловныиз известных мне трех атрибутов учетки компьютера, содержащих сведения об ОС (Operating-System, Operating-System-Hotfix, Operating-System-Service-Pack) ни один не содержит сведений о разрядности ОС. Эти свойства я получил до того, как задать вопрос. Для полноты картины не хватает разрядности ОС. Сон Веры ПавловныИ да, если вам нужно определять заблокированность/незаблокированность учетной записи не в цикле, а задавать как условие LDAP-запроса, то изучите вот это (эти фильтры вполне применимы для DirectorySearcher). Я это видел и на основе этой информации как раз и создаю фильтры. Проблема иногда возникает в том, какое свойство нужно смотреть в той или иной ситуации и как трактовать его значение (не всегда это очевидно). На данный момент все интересующие меня свойства, по отношению к компьютерам и пользователям я получаю успешно (за исключением разрядности ОС). Сон Веры ПавловныДумаю, тут нужно смотреть в сторону remote WMI. Спасибо, попробую. Возможно через WMI удастся получить и аккаунты учётных записей, имеющихся на удалённой машине, а так же проверить каждую из них на наличие административных прав на том компьютере. На данный момент наличие таких учёток я определяю через удалённый реестр, но эту операцию приходится выполнять с правами админа, т.к. соответствующая служба в Win7 и новее по умолчанию отключена (т.о. приходится на время запроса программно включать её и затем отключать). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 17:56 |
|
Не удаётся корректно проверить статус доменной учётной записи (заблокирована или нет)
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныДумаю, тут нужно смотреть в сторону remote WMI. Сделал так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2015, 18:35 |
|
|
start [/forum/topic.php?fid=20&fpage=70&tid=1400961]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 420ms |
0 / 0 |