ADsOpenObject-Funktion (adshlp.h)

Die ADsOpenObject-Funktion wird mit expliziten Benutzernamen- und Kennwortanmeldeinformationen an ein ADSI-Objekt gebunden. ADsOpenObject ist eine Wrapperfunktion für IADsOpenDSObject und entspricht der IADsOpenDSObject::OpenDsObject-Methode .

Syntax

HRESULT ADsOpenObject(
  [in]  LPCWSTR lpszPathName,
  [in]  LPCWSTR lpszUserName,
  [in]  LPCWSTR lpszPassword,
  [in]  DWORD   dwReserved,
  [in]  REFIID  riid,
  [out] void    **ppObject
);

Parameter

[in] lpszPathName

Typ: LPCWSTR

Die mit NULL endende Unicode-Zeichenfolge, die den ADsPath des ADSI-Objekts angibt. Weitere Informationen und Codebeispiele für Bindungszeichenfolgen für diesen Parameter finden Sie unter LDAP ADsPath und WinNT ADsPath.

[in] lpszUserName

Typ: LPCWSTR

Die mit NULL endende Unicode-Zeichenfolge, die den Benutzernamen angibt, der für den Verzeichnisdienst zur Verwendung für Anmeldeinformationen bereitgestellt werden soll. Diese Zeichenfolge sollte immer das Format "<Domäne\><Benutzername>" aufweisen, um Mehrdeutigkeiten zu vermeiden. Wenn beispielsweise DomainA und DomainB über eine Vertrauensstellung verfügen und beide Domänen über einen Benutzer mit dem Namen "user1" verfügen, kann nicht vorhergesagt werden, welche Domäne ADsOpenObject zum Überprüfen von "user1" verwendet.

[in] lpszPassword

Typ: LPCWSTR

Die Unicode-Zeichenfolge mit Null-Termin, die das Kennwort angibt, das für den Verzeichnisdienst zur Verwendung für Anmeldeinformationen bereitgestellt werden soll.

[in] dwReserved

Art: DWORD

Anbieterspezifische Authentifizierungsflags, die zum Definieren der Bindungsoptionen verwendet werden. Weitere Informationen finden Sie unter ADS_AUTHENTICATION_ENUM.

[in] riid

Typ: REFIID

Schnittstellenbezeichner für die angeforderte Schnittstelle für dieses Objekt.

[out] ppObject

Typ: VOID**

Zeiger auf einen Zeiger auf die angeforderte Schnittstelle.

Rückgabewert

Typ: HRESULT

Diese Methode unterstützt die HRESULT-Standardrückgabewerte , einschließlich der folgenden.

Weitere Informationen finden Sie unter ADSI-Fehlercodes.

Hinweise

Diese Funktion sollte nicht nur zum Überprüfen von Benutzeranmeldeinformationen verwendet werden.

Ein C/C++-Client ruft die Hilfsfunktion ADsOpenObject auf, um eine Bindung an ein ADSI-Objekt zu erstellen, wobei der Benutzername und das Kennwort verwendet werden, die als Anmeldeinformationen für den entsprechenden Verzeichnisdienst angegeben werden. Wenn lpszUsername und lpszPasswordNULL sind und ADS_SECURE_AUTHENTICATION festgelegt ist, wird ADSI mithilfe des Sicherheitskontexts des aufrufenden Threads an das Objekt gebunden. Dabei handelt es sich entweder um den Sicherheitskontext des Benutzerkontos, unter dem die Anwendung ausgeführt wird, oder des Clientbenutzerkontos, dessen Identität der aufrufende Thread angibt.

Die an die ADsOpenObject-Funktion übergebenen Anmeldeinformationen werden nur mit dem bestimmten Objekt verwendet, das an das jeweilige Objekt gebunden ist, und wirken sich nicht auf den Sicherheitskontext des aufrufenden Threads aus. Dies bedeutet, dass im folgenden Beispiel der Aufruf von ADsOpenObject andere Anmeldeinformationen als der Aufruf von ADsGetObject verwendet.

HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;

hr = ADsOpenObject(L"LDAP://rootDSE",
    pwszUsername,
    pwszPassword,
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (LPVOID*)&padsRoot1);

hr = ADsGetObject(L"LDAP://rootDSE",
    IID_IADs,
    (LPVOID*)&padsRoot2);

Um mit dem Anbieter WinNT: zu arbeiten, können Sie lpszUsername als eine der folgenden Zeichenfolgen übergeben:

  • Der Name eines Benutzerkontos, d. h. "jeffsmith".
  • Der Benutzername im Windows-Stil, d. h. "Fabrikam\jeffsmith".
Mit dem LDAP-Anbieter für Active Directory können Sie lpszUsername als eine der folgenden Zeichenfolgen übergeben:
  • Der Name eines Benutzerkontos, z. B. "jeffsmith". Um einen Benutzernamen selbst zu verwenden, müssen Sie nur das flag ADS_SECURE_AUTHENTICATION im dwReserved-Parameter festlegen.
  • Der Benutzerpfad aus einer früheren Version von Windows, z. B. "Fabrikam\jeffsmith".
  • Distinguished Name, z. B. "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=com". Um einen DN verwenden zu können, muss der dwReserved-Parameter null sein, oder er muss das flag ADS_USE_SSL enthalten.
  • Benutzerprinzipalname (UPN), z. B. "jeffsmith@Fabrikam.com". Um einen UPN zu verwenden, weisen Sie den entsprechenden UPN-Wert für das userPrincipalName-Attribut des Zielbenutzerobjekts zu.
Wenn die Kerberos-Authentifizierung für den erfolgreichen Abschluss einer bestimmten Verzeichnisanforderung mithilfe des LDAP-Anbieters erforderlich ist, muss die bindungszeichenfolge lpszPathName entweder einen serverlosen ADsPath verwenden, z. B. "LDAP://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com", oder sie muss einen ADsPath mit einem vollqualifizierten DNS-Servernamen verwenden, z. B. "LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith, CN=admin,DC=Fabrikam,DC=com". Die Bindung an den Server mit einem flachen NETBIOS-Namen oder einem kurzen DNS-Namen, z. B. unter Verwendung des Kurznamens "central3" anstelle von "central3.corp.Fabrikam.com", kann zur Kerberos-Authentifizierung führen.

Im folgenden Codebeispiel wird gezeigt, wie sie mit den angeforderten Benutzeranmeldeinformationen an ein Verzeichnisdienstobjekt gebunden werden.

IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;

// Insert code to securely retrieve the user name and password.

hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
                   "jeffsmith",
                   "etercespot",
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile adshlp.h
Bibliothek Activeds.lib
DLL Activeds.dll

Weitere Informationen

ADSI-Fehlercodes

ADSI-Funktionen

ADsOpenObject und IADsOpenDSObject::OpenDsObject

Binding

IADsOpenDSObject

IADsOpenDSObject::OpenDsObject