Platform SDK: Active Directory, ADSI, and Directory Services |
The following C++ code fragment contains a function that binds to the users container and then uses IADsContainer::GetObject to bind to the Administrator user object within the users container:
LPOLESTR szPath = new OLECHAR[MAX_PATH]; VARIANT var; hr = ADsOpenObject(L"LDAP://rootDSE", NULL, NULL, ADS_SECURE_AUTHENTICATION, //Use Secure Authentication IID_IADs, (void**)&pObject); //Get current domain DN. if (SUCCEEDED(hr)) { hr = pObject->Get(L"defaultNamingContext",&var); if (SUCCEEDED(hr)) { //Build the WKGUID binding string. wcscpy(szPath,L"LDAP://cn=Users,"); wcscat(szPath,var.bstrVal); if (pObject) pObject->Release(); hr = ADsOpenObject(szPath, NULL, NULL, ADS_SECURE_AUTHENTICATION, //Use Secure Authentication IID_IADs, (void**)&pObject); if (SUCCEEDED(hr)) { hr = pObject->QueryInterface(IID_IADsContainer,(void**)&pContainer); if (SUCCEEDED(hr)) { hr = pContainer->GetObject(L"user",L"cn=Administrator",&pDisp); if (SUCCEEDED(hr)) { hr = pDisp->QueryInterface(IID_IADs,(void**)&pChild); if (SUCCEEDED(hr)) { hr = pChild->get_ADsPath(&bstr); if (SUCCEEDED(hr)) { wprintf (L"ADsPath of child object: %s\n", bstr); FreeADsStr(bstr); } } if (pChild) pChild->Release(); } else wprintf(L"GetObject failed with hr: %x\n",hr); if (pDisp) pDisp->Release(); } if (pContainer) pContainer->Release(); } if (pObject) pObject->Release(); } VariantClear(&var); }