Acessando atributos com ADSI
Os métodos IADs.Get e IADs.GetEx são usados para recuperar valores de atributos nomeados. Ambos os métodos retornam um VARIANT valor. Esses métodos estão disponíveis apenas para diretórios que suportam um esquema. Ao aceder a objetos em um diretório sem esquema, as interfaces IADsPropertyEntry e IADsPropertyValue devem ser usadas para manipular valores de atributo.
Os métodos IADs.Get e IADs.GetEx retornam umaVARIANTque pode, ou não, ser uma matriz de VARIANT, dependendo do número de valores retornados pelo servidor. Por exemplo, se apenas um valor for retornado do servidor, independentemente de ser um atributo único ou de vários valores, o método retornará um único VARIANT. Por outro lado, se vários valores forem retornados, uma matriz VARIANT será retornada. Se uma matriz VARIANT for retornada, o membro vt da estrutura VARIANT conterá os sinalizadores VT_VARIANT/vbVariant e VT_ARRAY/vbArray.
Os métodos IADs.Get e IADs.GetEx também podem retornar um objeto COM usando a interface IDispatch. Nesse caso, o membro vt da estrutura VARIANT contém o sinalizador VT_DISPATCH/vbObject. Para acessar o objeto COM, chame o método QueryInterface na interface IDispatch para obter a interface desejada.
Outro tipo de dados retornado pelos métodos IADs.Get e IADs.GetEx são dados binários. Neste caso, os dados são fornecidos como uma matriz contígua de bytes e o membro vt da estrutura VARIANT conterá os sinalizadores VT_UI1/vbByte e VT_ARRAY/vbArray.
Observação
Microsoft Visual Basic, Scripting Edition suporta apenas matrizes VARIANT , e . Devido a isso, VBScript não pode ser usado para ler valores de propriedade binária.
Muitas interfaces ADSI definem propriedades específicas da interface. Por exemplo, a interface IADsComputer define a propriedade Location. Essas propriedades definidas pela interface podem conter dados idênticos a um dos atributos nomeados, mas as propriedades são específicas para o tipo de objeto ao qual a interface se refere. Em linguagens que oferecem suporte à automação, essas propriedades definidas pela interface podem ser acessadas usando a notação de ponto, conforme mostrado no exemplo de código a seguir.
Exemplos
O exemplo de código a seguir mostra como acessar a propriedade ADsPath na interface IADs.
Dim oUser as IADs
Dim Path as String
' Bind to a specific user object.
set oUser = GetObject(
"LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
' Get property.
Path = MyUser.ADsPath
Em linguagens que não sejam de automação, os métodos de acesso à propriedade devem ser usados para acessar as propriedades definidas pela interface. Por exemplo, o método IADsComputer::get_Location é usado para recuperar a propriedade IADsComputer.Location.
O exemplo de código C++ a seguir demonstra como usar o método de acesso à propriedade em C++ para recuperar o ADsPath de um usuário.
HRESULT hr;
IADs *pUser;
// Bind to user object.
hr = ADsGetObject(
L"LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com",
IID_IADs,
(void**)&pUser);
if(SUCCEEDED(hr))
{
BSTR bstrName;
// Get property.
hr = pUser->get_Name(&bstrName);
if(SUCCEEDED(hr))
{
wprintf(bstrName);
SysFreeString(bstrName);
}
pUser->Release();
}
Para obter mais informações sobre como acessar atributos com ADSI, consulte:
- O Método Get
- O método GetEx
- O método GetInfo
- Otimização usando GetInfoEx
- Acessando atributos com a interface IDirectoryObject
- Código de exemplo para ler atributos