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".
- 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.
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 |