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

File.SetAccessControl-Methode: (String, FileSecurity)

 

Veröffentlicht: Oktober 2016

Wendet von einem FileSecurity-Objekt beschriebene Einträge von Zugriffssteuerungslisten (Access Control List, ACL) auf die angegebene Datei an.

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

public static void SetAccessControl(
	string path,
	FileSecurity fileSecurity
)

Parameter

path
Type: System.String

Eine Datei, der Einträge von Zugriffssteuerungslisten hinzugefügt oder aus dieser entfernt werden sollen.

fileSecurity
Type: System.Security.AccessControl.FileSecurity

Ein FileSecurity-Objekt, das einen ACL-Eintrag beschreibt, der auf die vom path-Parameter beschriebene Datei angewendet werden soll.

Exception Condition
IOException

Beim Öffnen der Datei ist ein E/A-Fehler aufgetreten.

SEHException

Der path-Parameter ist null.

SystemException

Die Datei wurde nicht gefunden.

UnauthorizedAccessException

Der path-Parameter hat eine schreibgeschützte Datei angegeben.

- oder -

Dieser Vorgang wird von der aktuellen Plattform nicht unterstützt.

- oder -

Der path-Parameter hat ein Verzeichnis angegeben.

- oder -

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

ArgumentNullException

Der fileSecurity-Parameter ist null.

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 fileSecurity Parameter ersetzt die vorhandene Zugriffssteuerungsliste für die Datei. Um Berechtigungen für einen neuen Benutzer hinzuzufügen, verwenden Sie die GetAccessControl Methode zum Abrufen der vorhandenen ACL, ändern und dann SetAccessControl es wieder auf die Datei angewendet.

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

Die SetAccessControl -Methode behält nur FileSecurity Objekte, die nach der Erstellung geändert wurden.  Wenn ein FileSecurity -Objekt nicht geändert wurde, nicht in einer Datei gespeichert.  Es ist daher nicht möglich, zum Abrufen einer FileSecurity -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 FileSecurity Objekt aus der Quelldatei.

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

  3. Verwenden der GetSecurityDescriptorBinaryForm oder GetSecurityDescriptorSddlForm Methode der Quelle FileSecurity 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 FileSecurity Objekt.

  5. Festlegen des Ziels FileSecurity 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 Codebeispiel wird die GetAccessControl und SetAccessControl Methoden zum Hinzufügen und entfernen Sie dann den Zugriff steuern Zugriffssteuerungsliste (ACL) Eingabe aus einer Datei. 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 FileExample
    {
        public static void Main()
        {
            try
            {
                string fileName = "test.xml";

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

                // Add the access control entry to the file.
                AddFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

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

                // Remove the access control entry from the file.
                RemoveFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

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

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {


            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Remove the FileSystemAccessRule from the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }
    }
}

FileIOPermission

for permission to access the file. Security action: Demand. Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.NoAccess, F:System.Security.AccessControl.AccessControlActions.Change

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