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

DirectoryInfo.SetAccessControl-Methode (DirectorySecurity)

 

Wendet von einem DirectorySecurity-Objekt beschriebene Einträge in Zugriffssteuerungslisten auf die Datei an, die vom aktuellen DirectoryInfo-Objekt beschrieben wird.

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

public void SetAccessControl(
	DirectorySecurity directorySecurity
)

Parameter

directorySecurity
Type: System.Security.AccessControl.DirectorySecurity

Ein 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.

SystemException

Die Datei konnte nicht gefunden oder geändert werden.

UnauthorizedAccessException

Der aktuelle Prozess hat keinen Zugriff zum Öffnen der Datei.

PlatformNotSupportedException

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

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

System_CAPS_cautionAchtung

Die ACL für angegebene directorySecurity 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.

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.

Im folgenden Beispiel wird die GetAccessControl und SetAccessControl Methoden zum Hinzufügen und entfernen Sie dann ein Eintrag der Zugriffssteuerungsliste (ACL) aus einem Verzeichnis steuern.

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. Security action: F:System.Security.Permissions.SecurityAction.Demand. Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.NoAccess, F:System.Security.AccessControl.AccessControlActions.View

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