lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Ich habe eine Funktion zum auslesen der erweiterten NTFS Berechtigungen.

private static List<string> GetDetailedRights(FileSystemRights rights)
{

    List<string> detailedRights = new List<string>();

    foreach (FileSystemRights value in Enum.GetValues(typeof(FileSystemRights)))
    {

        if (value == 0) continue; // Ignore 'None'

        if (rights.HasFlag(value))
        {
            detailedRights.Add(value.ToString());
        }

    }

    return detailedRights;

}

So rufe ich die Funktion auf:

List<string> detailedRightsList = GetDetailedRights(rule.FileSystemRights);
string detailedRights = string.Join(", ", detailedRightsList);

In der Ausgabe sind manche Rechte aber doppelt.

ReadData, ReadData, CreateFiles, CreateFiles, AppendData, AppendData, ReadExtendedAttributes, WriteExtendedAttributes, ExecuteFile, ExecuteFile, ReadAttributes, WriteAttributes, Write, ReadPermissions, Read, ReadAndExecute, Synchronize

Wie kann ich machen das jede Berechtigung nur einmal angezeigt wird?

bezieht sich auf eine Antwort auf: Erweiterte NTFS Berechtigungen anzeigen
von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Du kannst die Methode Distinct() auf das List<> Element anwenden.

string detailedRights = string.Join(", ", detailedRightsList.Distinct());
von (495 Punkte)  
0 Pluspunkte 0 Minuspunkte

Manche Rechte wie Read, ReadAndExecute, Write usw. sind kombinierte Flags, die aus mehreren Einzelrechten bestehen. Beim Iterieren mit HasFlag trifft das also mehrfach auf die gleichen Einzelrechte zu, weil z. B. ReadAndExecute auch Read, ExecuteFile usw. enthält. Du kannst statt einer List<string> ein Hashset<string> erstellen.

private static List<string> GetDetailedRights(FileSystemRights rights)
{
    HashSet<string> detailedRights = new HashSet<string>();

    foreach (FileSystemRights value in Enum.GetValues(typeof(FileSystemRights)))
    {
        if (value == 0) continue; // Ignore 'None'

        if (rights.HasFlag(value))
        {
            detailedRights.Add(value.ToString());
        }
    }

    return detailedRights.ToList();
}

Dadurch wird jede Berechtigung nur einmal angezeigt.

von (629 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

265 Kommentare

14 Nutzer