#model-view-controller #winapi #active-directory #ldap #adsi
#model-view-controller #winapi #active-directory #ldap #adsi
Вопрос:
MSDN сообщает: функция LookupAccountSid возвращает имя первого домена, в котором найден SID.
Если Пользователь перенесен в домен B из домена A, и мы запрашиваем старый SID пользователя с помощью функции LookupAccountSid с любого компьютера домена A, мы получаем доменное имя домена A вместо домена B.
Похоже, что даже после переноса пользователя Active Directory сохраняет информацию о пользователе в домене A. Эта проблема не устранена даже после перезапуска компьютеров домена A, включая контроллер домена.
Мне нужно имя нового домена пользователя. Можете ли вы предложить, как решить эту проблему?
Ответ №1:
Большинство Win32 API предназначены для работы в среде, где у одной учетной записи один sid. Active Directory поддерживает sidHistory
атрибут, который может сохранять дополнительные SID. Если вы хотите использовать API Active Directory (например, ADSI) или LDAP API, вы можете найти имя основного пользователя, основной SID и все другие атрибуты, которые вам нужны.
Самая большая проблема при ответе на ваш вопрос заключается в том, что вы не описываете сценарий миграции домена, который планируется и используется в вашей организации. Когда вы планируете отключить контроллеры старых доменов? Планируете ли вы очистить старые SID, сохраненные в файловой системе, общих ресурсах или в реестре?
Важно знать полный сценарий миграции домена, чтобы программа, которую вы сейчас пишете, продолжала работать на следующих этапах миграции домена. Я рекомендую вам поговорить с администраторами или руководителем проекта миграции домена вашей организации, чтобы понять, что именно планируется сделать.
Комментарии:
1. Спасибо за ответ. Вы правы, ADSI можно использовать для этой цели. Но в идеале он должен работать с функцией LookupAccountSid. Не могли бы вы любезно рассказать, почему
2. Спасибо за ответ. Вы правы, ADSI можно использовать для этой цели. Но в идеале он должен работать с функцией LookupAccountSid. Не могли бы вы любезно рассказать, почему и где Active Directory хранит информацию о пользователе в старом домене (Domain A) после переноса пользователя в новый домен (Domain B). У меня есть тестовая среда, состоящая из нескольких лесов Windows 2003, работающих в собственном режиме, и я переношу пользователя с помощью ADMT (средство миграции Active Directory) 2.5. Спасибо
3. Информация сохраняется в атрибуте SID-History Active Directory. Некоторую дополнительную информацию вы можете найти здесь: DsAddSidHistory . Вы можете использовать ADSIEdit.msc для проверки содержимого атрибута. Здесь вы можете найти скрипт, который считывает многозначный
sIDHistory
атрибут.