Active Directory Alle Eigenschaften in einer Tabelle anzeigen

Ich versuche, eine LDAP-Abfrage zu erstellen, um alle Eigenschaften zu erfassen, die wir über unsere Benutzer haben, ohne die Eigenschaften vorher anzugeben. Ich möchte dies in einer Tabelle anzeigen, also den folgenden Code verwenden. Dies funktioniert, wenn ich die search.PropertiesToLoad.Add ("cn") auskommentiere; Zeile und zeigt alle anderen Eigenschaften an, die ich auf die gleiche Weise hinzufüge, aber nicht, wenn ich eine vollständige Suche nach allen Eigenschaften durchführe.

DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);

search.CacheResults = true;
//search.PropertiesToLoad.Add("cn");

SearchResultCollection allResults = search.FindAll();
DataTable resultsTable = new DataTable("Results");

//add columns for each property in results
foreach (string colName in allResults.PropertiesLoaded)
    resultsTable.Columns.Add(colName, colName.GetType());

//loop to add records to DataTable
foreach (SearchResult result in allResults)
{
    int tmp = result.Properties.Count;
    DataRow row = resultsTable.NewRow();
    foreach (string columnName in search.PropertiesToLoad)
    {
        if (columnName.Equals("lastlogon"))
        {
            if (result.Properties.Contains(columnName))
                row[columnName] = ConvertDate(result.Properties[columnName].ToString());
            else
                row[columnName] = "";
        }
        else
        {
            if (result.Properties.Contains(columnName))
                row[columnName] = result.Properties[columnName][0].ToString();
            else
                row[columnName] = "";
        }
    }
    resultsTable.Rows.Add(row);
}

gridResults.DataSource = resultsTable;

Das Problem scheint mit zu sein

foreach (string colName in allResults.PropertiesLoaded)
    resultsTable.Columns.Add(colName, colName.GetType());

Ich habe erwartet, dass dies alle Eigenschaften wiederholt, wenn kein PropertiesToLoad angegeben wurde, aber es ist keine Möglichkeit, das zu erreichen, was ich möchte.

Ich weiß, ich brauche noch ein paar Versuchsfänge und andere Teile im Code, es ist ein grober Entwurf.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage