2011-05-25 28 views
0

MSDN说:LookupAccountSid函数返回找到SID的第一个域的名称。LookupAccountSID返回错误的域名

如果用户域A迁移到域B,我们通过使用执行LookupAccountSid功能从域A的任何机器,我们得到的域名查询的用户的旧SID域A而不是域B.

即使在迁移用户后,Active Directory仍将用户信息保留在域A上。即使重新启动域A的计算机,包括域控制器河

我需要用户名为的新域名。你能建议如何解决这个问题?

回答

0

大多数Win32 API旨在在一个帐户有一个sid的环境中工作。 Active Directory支持sidHistory属性,可以保存更多的SID。如果您要使用Active Directory API(例如ADSI)或LDAP API,则可以找到您需要的主用户名,主SID和所有属性。

在回答你的问题时,最大的问题是你没有描述域迁移场景在你的组织中计划和使用的域迁移场景。当你打算关闭旧的域控制器?您是否计划清除保存在文件系统,共享或注册表中的旧SID?

了解完整的域迁移方案非常重要,以便您现在编写的程序将继续适用于域迁移的下一步。我建议您与管理员或组织的域迁移项目项目经理交谈,以了解准确计划要执行的操作。

+0

感谢您的回复。你说得对,ADSI可以用于这个目的。但是,理想情况下,它应该与LookupAccountSid函数一起使用。你能否告诉我为什么 – picrodevosio 2011-05-26 10:49:37

+0

谢谢你的回复。你说得对,ADSI可以用于这个目的。但是,理想情况下,它应该与LookupAccountSid函数一起使用。您可以在用户迁移到新域(域B)后,告诉Active Directory为何以及在何处将用户信息保留在旧域(域A)上。我有一个测试环境,包含多个Windows操作系统的本地模式,并使用ADMT(Active Directory迁移工具)2.5迁移用户。谢谢 – picrodevosio 2011-05-26 10:58:07

+0

信息保存在Active Directory的[SID-History Attribute](http://msdn.microsoft.com/zh-cn/library/ms679833.aspx)中。一些额外的信息,你可以在这里找到:[DsAddSidHistory](http://msdn.microsoft.com/en-us/library/ms677982.aspx)。您可以使用ADSIEdit.msc来检查属性的包含。 [Here](http://portal.sivarajan.com/2011/04/sidhistory-report-with-multi-value.html)中,您可以找到一个读取多值'sIDHistory'属性的脚本。 – Oleg 2011-05-26 11:30:06