Active Directory Mostrar todas las propiedades en una tabla

Estoy tratando de lograr una consulta LDAP para recopilar todas las propiedades que tenemos sobre nuestros usuarios sin especificar las propiedades de antemano, me gustaría mostrar esto en una tabla, así que use el siguiente código. Esto funciona si elimino el comentario de search.PropertiesToLoad.Add ("cn"); línea y mostrará cualquier otra propiedad que añada de la misma manera, pero no cuando hago una búsqueda completa de todas las propiedades.

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;

El problema parece estar con

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

Esperaba que esto hiciera un bucle con todas las propiedades cuando no se había especificado PropertiesToLoad, pero no es una forma de lograr lo que quiero.

Sé que necesito algunos intentos de captura y otros bits en el código hasta el momento, es un borrador.

Respuestas a la pregunta(3)

Su respuesta a la pregunta