IADsContainer::MoveHere 方法将指定的对象移动到实现此接口的容器。方法可用于重命名 对象。
以 null 结尾的 Unicode 字符串,指定要移动的对象的 ADsPath 。
以 null 结尾的 Unicode 字符串,指定容器中新对象的相对名称。 这可以是 NULL,在这种情况下,将移动对象。 如果它不是 NULL,则会在进程中相应地重命名对象。
指向指向移动对象上 IDispatch 接口的指针的指针。
此方法支持标准返回值(包括 S_OK)以成功执行操作。 有关错误代码的详细信息,请参阅 ADSI 错误代码。
在 Active Directory 中,可以移动同一域中的对象,也可以从同一目录林中的不同域移动对象。 对于跨域移动,以下限制适用:
- 目标域必须处于本机模式。
- 要移动的对象必须是叶对象或空容器。
- NT LAN Manager (NTLM) 无法执行身份验证;使用 Kerberos 身份验证或委派。 请注意,如果未使用 Kerberos 身份验证,则密码通过网络以明文形式传输。 若要避免这种情况,请使用具有安全身份验证的委派。
- 不能将安全主体 (,例如用户、组、计算机等) 属于全局组。 移动安全主体时,会在目标位置为对象创建新的 SID。 但是,将保留源中的旧 SID(存储在 sIDHistory 属性中)以及 对象的密码。
无服务器 ADsPath 可用于源或目标或两者。
IADsContainer::MoveHere 方法可用于重命名同一容器中的对象或在不同容器之间移动对象。 移动对象会保留对象 RDN,而重命名对象会更改 RDN。
例如,下面的代码示例执行重命名操作。
下面的代码示例执行移动。
在 Visual Basic 应用程序中,将对象从一个容器移动到另一个容器时,可以将 vbNullString 作为第二个参数传递。
但是,不能对 VBScript 执行相同的操作。 这是因为 VBScript 将 vbNullString 映射到空字符串而不是 null 字符串,Visual Basic 也一样。 必须显式使用 RDN,如上一示例所示。
示例
下面的代码示例演示如何使用此方法重命名对象。
下面的代码示例使用 IADsContainer::MoveHere 方法移动用户对象。
ADSI 错误代码
ADS_AUTHENTICATION_ENUM
ADsOpenObject
IADsContainer
IADsContainer::CopyHere
IADsOpenDSObject::OpenDsObject