Función ADsOpenObject (adshlp.h)
La función ADsOpenObject se enlaza a un objeto ADSI mediante credenciales explícitas de nombre de usuario y contraseña. ADsOpenObject es una función contenedora para IADsOpenDSObject y es equivalente al método IADsOpenDSObject::OpenDsObject .
Sintaxis
HRESULT ADsOpenObject(
[in] LPCWSTR lpszPathName,
[in] LPCWSTR lpszUserName,
[in] LPCWSTR lpszPassword,
[in] DWORD dwReserved,
[in] REFIID riid,
[out] void **ppObject
);
Parámetros
[in] lpszPathName
Tipo: LPCWSTR
Cadena Unicode terminada en null que especifica el ADsPath del objeto ADSI. Para obtener más información y ejemplos de código de cadenas de enlace para este parámetro, consulte LDAP ADsPath y WinNT ADsPath.
[in] lpszUserName
Tipo: LPCWSTR
Cadena Unicode terminada en null que especifica el nombre de usuario que se va a proporcionar al servicio de directorio que se usará para las credenciales. Esta cadena siempre debe tener el formato "<dominio\><nombre> de usuario" para evitar ambigüedades. Por ejemplo, si DomainA y DomainB tienen una relación de confianza y ambos dominios tienen un usuario con el nombre "user1", no es posible predecir qué dominio ADsOpenObject usará para validar "user1".
[in] lpszPassword
Tipo: LPCWSTR
Cadena Unicode terminada en null que especifica la contraseña que se va a proporcionar al servicio de directorio que se va a usar para las credenciales.
[in] dwReserved
Tipo: DWORD
Marcas de autenticación específicas del proveedor usadas para definir las opciones de enlace. Para obtener más información, consulte ADS_AUTHENTICATION_ENUM.
[in] riid
Tipo: REFIID
Identificador de interfaz de la interfaz solicitada en este objeto.
[out] ppObject
Tipo: VOID**
Puntero a un puntero a la interfaz solicitada.
Valor devuelto
Tipo: HRESULT
Este método admite los valores devueltos HRESULT estándar, incluidos los siguientes.
Para obtener más información, consulta Códigos de error adsi.
Comentarios
Esta función no se debe usar solo para validar las credenciales de usuario.
Un cliente de C/C++ llama a la función auxiliar ADsOpenObject para enlazar a un objeto ADSI mediante el nombre de usuario y la contraseña proporcionados como credenciales para el servicio de directorio adecuado. Si lpszUsername y lpszPassword son NULL y se establece ADS_SECURE_AUTHENTICATION , ADSI se enlaza al objeto mediante el contexto de seguridad del subproceso que realiza la llamada, que es el contexto de seguridad de la cuenta de usuario en la que se ejecuta la aplicación o de la cuenta de usuario cliente que suplanta el subproceso que realiza la llamada.
Las credenciales que se pasan a la función ADsOpenObject solo se usan con el objeto determinado enlazado a y no afectan al contexto de seguridad del subproceso que realiza la llamada. Esto significa que, en el ejemplo siguiente, la llamada a ADsOpenObject usará credenciales diferentes que la llamada a ADsGetObject.
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);
Para trabajar con WinNT: proveedor, puedes pasar lpszUsername como una de las siguientes cadenas:
- El nombre de una cuenta de usuario, es decir, "jeffsmith".
- El nombre de usuario de estilo de Windows, es decir, "Fabrikam\jeffsmith".
- Nombre de una cuenta de usuario, como "jeffsmith". Para usar un nombre de usuario por sí mismo, solo debe establecer la marca ADS_SECURE_AUTHENTICATION en el parámetro dwReserved .
- Ruta de acceso del usuario de una versión anterior de Windows, como "Fabrikam\jeffsmith".
- Nombre distintivo, como "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com". Para usar un DN, el parámetro dwReserved debe ser cero o debe incluir la marca ADS_USE_SSL .
- Nombre principal de usuario (UPN), como "jeffsmith@Fabrikam.com". Para usar un UPN, asigne el valor UPN adecuado para el atributo userPrincipalName del objeto de usuario de destino.
En el ejemplo de código siguiente se muestra cómo enlazar a un objeto de servicio de directorio con las credenciales de usuario solicitadas.
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);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | adshlp.h |
Library | Activeds.lib |
Archivo DLL | Activeds.dll |