Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Directory.SetAccessControl-Methode: (String, DirectorySecurity)

 

Veröffentlicht: Oktober 2016

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
Type: System.String

Ein Verzeichnis, dem Einträge von Zugriffssteuerungslisten hinzugefügt oder aus diesem entfernt werden sollen.

directorySecurity
Type: 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.

Exception Condition
ArgumentNullException

Der directorySecurity-Parameter ist null.

DirectoryNotFoundException

Das Verzeichnis wurde nicht gefunden.

ArgumentException

Der path war ungültig.

UnauthorizedAccessException

Der aktuelle Prozess hat keinen Zugriff auf das durch path angegebene Verzeichnis.

- 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 gilt Einträge Access Control List (ACL) für eine Datei, die die nicht geerbte Zugriffssteuerungsliste darstellt.

System_CAPS_cautionAchtung

Die ACL angegeben, für die directorySecurity Parameter ersetzt die vorhandene Zugriffssteuerungsliste für das Verzeichnis. Um Berechtigungen für einen neuen Benutzer hinzuzufügen, verwenden Sie die GetAccessControl -Methode zum Abrufen der vorhandenen ACL, und ändern Sie sie.

Eine ACL beschreibt einzelne Benutzer und/oder Gruppen haben, oder, die Rechte für bestimmte Aktionen für die angegebene Datei oder das Verzeichnis verfügen. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen oder Entfernen von Zugriffssteuerungslisten-Einträgen.

Die SetAccessControl -Methode behält nur DirectorySecurity Objekte, die nach der Erstellung geändert wurden.  Wenn ein DirectorySecurity -Objekt nicht geändert wurde, nicht in einer Datei gespeichert.  Es ist daher nicht möglich, zum Abrufen einer DirectorySecurity -Objekt von einer Datei und das gleiche Objekt einer anderen Datei zuzuweisen.

ACL-Informationen aus einer Datei in einen anderen zu kopieren:

  1. Verwenden der GetAccessControl -Methode zum Abrufen der DirectorySecurity Objekt aus der Quelldatei.

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

  3. Verwenden der GetSecurityDescriptorBinaryForm oder GetSecurityDescriptorSddlForm Methode der Quelle DirectorySecurity Objekt, das die ACL-Informationen abrufen.

  4. Verwenden der SetSecurityDescriptorBinaryForm oder SetSecurityDescriptorSddlForm Methode, um die Informationen zu kopieren, die in Schritt 3 in die Zieldatenbank abgerufenen DirectorySecurity Objekt.

  5. Festlegen des Ziels DirectorySecurity Objekt, das das Ziel mit der SetAccessControl Methode.

In NTFS-Umgebungen ReadAttributes und ReadExtendedAttributes werden dem Benutzer erteilt, wenn der Benutzer hat ListDirectory Rechte für den übergeordneten Ordner. Verweigern ReadAttributes und ReadExtendedAttributes, Verweigern ListDirectory für das übergeordnete Verzeichnis.

Im folgenden Beispiel wird die GetAccessControl und SetAccessControl Methoden zum Hinzufügen von Zugriff steuern Eintrag Zugriffssteuerungsliste (ACL) und entfernen Sie dann aus dem Verzeichnis einen ACL-Eintrag. 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);

        }
    }
}

FileIOPermission

for permission to enumerate access control list (ACL) for a directory. Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.NoAccess , F:System.Security.AccessControl.AccessControlActions.View

Security action: Demand.

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: