War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Directory.SetAccessControl-Methode

Wendet von einem DirectorySecurity-Objekt beschriebene Einträge von Zugriffssteuerungslisten auf das angegebene Verzeichnis an.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)

public static void SetAccessControl(
	string path,
	DirectorySecurity directorySecurity
)

Parameter

path
Typ: System.String
Ein Verzeichnis, dem Einträge von Zugriffssteuerungslisten hinzugefügt oder aus diesem entfernt werden sollen.
directorySecurity
Typ: System.Security.AccessControl.DirectorySecurity
Ein DirectorySecurity-Objekt, das einen Eintrag in einer Zugriffssteuerungsliste beschreibt, der auf das vom path-Parameter beschriebene Verzeichnis angewendet werden soll.

AusnahmeBedingung
ArgumentNullException

Der directorySecurity-Parameter ist null.

DirectoryNotFoundException

Das Verzeichnis konnte nicht gefunden werden.

ArgumentException

Das path war ungültig.

UnauthorizedAccessException

Der aktuelle Prozess hat keinen Zugriff zum Öffnen des specified durch path angegebenen Verzeichnisses.

- oder -

Der aktuelle Prozess verfügt nicht über ausreichende Berechtigungen zum Festlegen des ACL-Eintrags.

PlatformNotSupportedException

Das aktuelle Betriebssystem ist nicht Windows 2000 oder höher.

Die SetAccessControl-Methode wendet Einträge in der Zugriffssteuerungsliste auf eine Datei an, die die nicht geerbte Zugriffssteuerungsliste darstellt.

WarnhinweisVorsicht

Die für den directorySecurity-Parameter angegebene Zugriffssteuerungsliste ersetzt die vorhandene Zugriffssteuerungsliste für das Verzeichnis. Um Berechtigungen für einen neuen Benutzer hinzuzufügen, rufen Sie die vorhandene Zugriffssteuerungsliste mithilfe der GetAccessControl-Methode ab, und ändern Sie die Zugriffssteuerungsliste.

In einer Zugriffssteuerungsliste werden einzelne Benutzer und/oder Gruppen beschrieben, die über bestimmte Rechte für bestimmte Aktionen für die angegebene Datei oder das angegebene Verzeichnis verfügen. Weitere Informationen finden Sie unter Übersicht über die ACL-Technologie und Gewusst wie: Hinzufügen oder Entfernen von Zugriffssteuerungslisten-Einträgen.

Die SetAccessControl-Methode behält nur DirectorySecurity-Objekte bei, die nach der Erstellung geändert wurden. Wenn ein DirectorySecurity-Objekt nicht geändert wurde, wird es nicht als Datei beibehalten. Es ist daher nicht möglich, ein und dasselbe DirectorySecurity-Objekt von einer Datei abzurufen und einer anderen Datei zuzuweisen.

So kopieren Sie ACL-Informationen aus einer Datei in eine andere:

  1. Rufen Sie das DirectorySecurity-Objekt mithilfe der GetAccessControl-Methode aus der Quelldatei ab.

  2. Erstellen Sie ein neues DirectorySecurity-Objekt für die Zieldatei.

  3. Rufen Sie die ACL-Informationen mithilfe der GetSecurityDescriptorBinaryForm-Methode oder der GetSecurityDescriptorSddlForm-Methode des DirectorySecurity-Quellobjekts ab.

  4. Kopieren Sie die in Schritt 3 abgerufenen Informationen mithilfe der SetSecurityDescriptorBinaryForm-Methode oder der SetSecurityDescriptorSddlForm-Methode in das DirectorySecurity-Zielobjekt.

  5. Weisen Sie das DirectorySecurity-Zielobjekt mit der SetAccessControl-Methode der Zieldatei zu.

In NTFS-Umgebungen werden dem Benutzer ReadAttributes und ReadExtendedAttributes gewährt, wenn der Benutzer über ListDirectory-Rechte für den übergeordneten Ordner verfügt. Um ReadAttributes und ReadExtendedAttributes zu verweigern, verweigern Sie ListDirectory für das übergeordnete Verzeichnis.

Im folgenden Beispiel werden GetAccessControl und die SetAccessControl-Methoden, um einen Zugriffssteuerungslisten (acl)- Eintrag hinzuzufügen und einen ACL-Eintrag einem Verzeichnis dann zu entfernen. Sie müssen ein gültiges Benutzer- oder Gruppenkonto angeben, um dieses Beispiel auszuführen.


using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the 
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings. 
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the 
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings. 
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }
    }
}



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

  • FileIOPermission 

    für die Berechtigung zum Auflisten der Zugriffssteuerungsliste für ein Verzeichnis. Zugeordnete Enumerationen: NoAccess, View

    Sicherheitsaktion: Anforderung.

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft