Active Directory mehrere Attribute gleichzeitig abfragen
-
Hallo ich programmiere zur Zeit an einem Client der aus dem Active Directory und LDAP die User und Gruppen ermitteln soweit so gut.. leider sind meine C++ Kentnisse etwas eingeschlafen mir ist momentan etwas unklar wie ich zum sAMAccountName noch weiter attribute wie den namen oder die Strasse auslesen kann. Die Attribute an sich sind klar aber nicht wie ich nachfolgende Funktion aufbohre damit noch weitere Attribute ermittelt und übergeben werden (momentan nur der Benutzeraccount). Wäre toll wenn mir jemand dabei helfen könnte ich denke C++ Kentnisse sind da eher gefragt als Ketnisse rund um das Thema AD/LDAP
im vorraus schon mal ein dickes Dankeschön
grüße
--> die Funktion
bool CActiveDirectoryUsers::FindUsersIn(CStringArray* pUserArray,IDirectorySearch *pContainerToSearch) { if(pContainerToSearch==NULL||pUserArray==NULL) return false; LPOLESTR pszSearchFilter = new OLECHAR[MAX_PATH]; wcscpy(pszSearchFilter,L"(&(objectClass=user)(objectCategory=person))"); ADS_SEARCHPREF_INFO SearchPrefs; SearchPrefs.dwSearchPref = ADS_SEARCHPREF_SEARCH_SCOPE; SearchPrefs.vValue.dwType = ADSTYPE_INTEGER; SearchPrefs.vValue.Integer = ADS_SCOPE_SUBTREE; DWORD dwNumPrefs = 1; LPOLESTR pszColumn = NULL; ADS_SEARCH_COLUMN col; HRESULT hr; IADs *pObj = NULL; IADs * pIADs = NULL; ADS_SEARCH_HANDLE hSearch = NULL; hr = pContainerToSearch->SetSearchPreference( &SearchPrefs, dwNumPrefs); if (FAILED(hr)) return false; LPOLESTR pszNonVerboseList[] = {L"sAMAccountName"}; LPOLESTR szName = new OLECHAR[MAX_PATH]; int iCount = 0; hr = pContainerToSearch->ExecuteSearch(pszSearchFilter, pszNonVerboseList,sizeof(pszNonVerboseList)/sizeof(LPOLESTR),&hSearch); if ( SUCCEEDED(hr) ) { hr = pContainerToSearch->GetFirstRow( hSearch); if (SUCCEEDED(hr)) { while( hr != S_ADS_NOMORE_ROWS ) { iCount++; while( pContainerToSearch->GetNextColumnName( hSearch, &pszColumn ) != S_ADS_NOMORE_COLUMNS ) { hr = pContainerToSearch->GetColumn( hSearch, pszColumn, &col ); if ( SUCCEEDED(hr) ) { if (0==wcscmp(L"sAMAccountName", pszColumn)) { wcscpy(szName,col.pADsValues->CaseIgnoreString); pUserArray->Add((CW2A)(szName)); } pContainerToSearch->FreeColumn( &col ); } FreeADsMem( pszColumn ); } hr = pContainerToSearch->GetNextRow( hSearch); } } else return false; pContainerToSearch->CloseSearchHandle(hSearch); } else return false; return true; }
-
Hallo bin neu hier sorry wegen der codeformatierung aber ich denke der Beitrag ist unter Datenbanken besser aufgehoben falls jemand von den Mods die Zeit findet ihn zu verschieben.
Danke
-
habe es hinbekommen
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum MFC (Visual C++) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.