IADsContainer::MoveHere-Methode (iads.h)
Die IADsContainer::MoveHere-Methode verschiebt ein angegebenes Objekt in den Container, der diese Schnittstelle implementiert. Die -Methode kann verwendet werden, um ein Objekt umzubenennen.
Syntax
HRESULT MoveHere(
[in] BSTR SourceName,
[in] BSTR NewName,
[out] IDispatch **ppObject
);
Parameter
[in] SourceName
Die Unicode-Zeichenfolge mit Null-Beendigung, die den ADsPath des zu verschiebenden Objekts angibt.
[in] NewName
Die mit Null beendete Unicode-Zeichenfolge, die den relativen Namen des neuen Objekts im Container angibt. Dies kann NULL sein. In diesem Fall wird das Objekt verschoben. Wenn es nicht NULL ist, wird das Objekt im Prozess entsprechend umbenannt.
[out] ppObject
Zeiger auf einen Zeiger auf die IDispatch-Schnittstelle für das verschobene Objekt.
Rückgabewert
Diese Methode unterstützt Standardrückgabewerte, einschließlich S_OK, für einen erfolgreichen Vorgang. Weitere Informationen zu Fehlercodes finden Sie unter ADSI-Fehlercodes.
Hinweise
In Active Directory können Sie ein Objekt innerhalb derselben Domäne oder aus verschiedenen Domänen in derselben Verzeichnisgesamtstruktur verschieben. Für die domänenübergreifende Verschiebung gelten die folgenden Einschränkungen:
- Die Zieldomäne muss sich im einheitlichen Modus befinden.
- Zu verschiebende Objekte müssen ein Blattobjekt oder ein leerer Container sein.
- NT LAN Manager (NTLM) kann keine Authentifizierung durchführen. Verwenden Sie die Kerberos-Authentifizierung oder -Delegierung. Beachten Sie, dass das Kennwort im Klartext über das Netzwerk übertragen wird, wenn die Kerberos-Authentifizierung nicht verwendet wird. Um dies zu vermeiden, verwenden Sie die Delegierung mit der sicheren Authentifizierung.
- Sie können keine Sicherheitsprinzipale (z. B. Benutzer, Gruppe, Computer usw.) verschieben, die zu einer globalen Gruppe gehören. Wenn ein Sicherheitsprinzipal verschoben wird, wird eine neue SID für das Objekt am Ziel erstellt. Die alte SID aus der Quelle, die im sIDHistory-Attribut gespeichert ist, wird jedoch beibehalten, ebenso das Kennwort des Objekts.
Set ou = GetObject("LDAP://server1/OU=Support,DC=North,DC=Fabrikam,DC=COM")
ou.MoveHere("LDAP://server2/CN=jeffsmith,OU=Sales,DC=South,DC=Fabrikam,DC=Com", vbNullString)
Ein serverloser ADsPath kann entweder für die Quelle oder das Ziel oder beides verwendet werden.
Die IADsContainer::MoveHere-Methode kann entweder verwendet werden, um ein Objekt innerhalb desselben Containers umzubenennen oder ein Objekt zwischen verschiedenen Containern zu verschieben. Beim Verschieben eines Objekts bleibt das Objekt RDN erhalten, während das Umbenennen eines Objekts den RDN ändert.
Im folgenden Codebeispiel wird beispielsweise die Umbenennungsaktion ausgeführt.
set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=Jeff Smith,dc=dom,dc=com", "cn=Denise Smith")
Im folgenden Codebeispiel wird die Verschiebung ausgeführt.
set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sales,dc=dom,dc=com", "cn=jeffsmith")
In Visual Basic-Anwendungen können Sie vbNullString als zweiten Parameter übergeben, wenn Sie ein Objekt von einem Container in einen anderen verschieben.
Set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sale,dc=dom,dc=com", vbNullString)
Mit VBScript können Sie dies jedoch nicht tun. Dies liegt daran, dass VBScript vbNullString einer leeren Zeichenfolge statt einer NULL-Zeichenfolge zuordnet, wie Visual Basic. Sie müssen den RDN explizit verwenden, wie im vorherigen Beispiel gezeigt.
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Sie diese Methode verwenden, um ein Objekt umzubenennen.
Dim cont As IADsContainer
Dim usr As IADsUser
On Error GoTo Cleanup
' Rename an object.
Set cont = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set usr = cont.MoveHere("LDAP://CN=jeffsmith,OU=Sales, DC=Fabrikam,DC=com", "CN=jayhenningsen")
' Move an object.
cont.MoveHere("LDAP://CN=denisesmith,OU=Engineer,DC=Fabrikam,DC=com", vbNullString)
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set cont = Nothing
Set usr = Nothing
Im folgenden Codebeispiel wird ein Benutzerobjekt mithilfe der IADsContainer::MoveHere-Methode verschoben.
/////////////////////////////////////////////
// First, bind to the destination container.
////////////////////////////////////////////
HRESULT hr;
IADsContainer *pCont=NULL;
CoInitialize(NULL);
hr = ADsGetObject(
L"LDAP://OU=MCS,DC=windows2000,DC=mytest,DC=fabrikam,DC=com",
IID_IADsContainer,
(void**) &pCont );
if ( !SUCCEEDED(hr) )
{
goto Cleanup;
}
//////////////////////////////////////////////////
// Second, move the object to the bound container.
//////////////////////////////////////////////////
IDispatch *pDisp=NULL;
hr = pCont->MoveHere(CComBSTR("LDAP://CN=Jeff Smith,OU=DSys,DC=windows2000,DC=mytest,DC=fabrikam,DC=com"), NULL, &pDisp );
pCont->Release();
if (SUCCEEDED(hr) )
{
// You can perform another operation here, such as updating attributes.
pDisp->Release();
}
Cleanup:
if(pCont)
pCont->Release();
if(pDisp)
pDisp->Release();
CoUninitialize();
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | iads.h |
DLL | Activeds.dll |