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

FileInfo.SetAccessControl-Methode: (FileSecurity)

 

Veröffentlicht: Oktober 2016

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

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

public void SetAccessControl(
	FileSecurity fileSecurity
)

Parameter

fileSecurity
Type: System.Security.AccessControl.FileSecurity

Ein FileSecurity-Objekt, das einen Eintrag in einer Zugriffssteuerungsliste beschreibt, der auf die aktuelle Datei angewendet werden soll.

Exception Condition
ArgumentNullException

Der fileSecurity-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.

Die SetAccessControl Methode gilt Einträge Access Control List (ACL) für die aktuelle Datei, die die nicht geerbte Zugriffssteuerungsliste darstellt.

Verwenden der SetAccessControl Methode Bedarf hinzufügen oder Entfernen von ACL-Einträgen aus einer Datei.

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.

Im folgenden Codebeispiel wird die GetAccessControl -Methode und der SetAccessControl -Methode zum Hinzufügen und entfernen Sie dann einen ACL-Eintrag 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 = "c:/test.xml";

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

                // Add the access control entry to the file.
                // Before compiling this snippet, change MyDomain to your 
                // domain name and MyAccessAccount to the name 
                // you use to access your domain.
                AddFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);

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

                // Remove the access control entry from the file.
                // Before compiling this snippet, change MyDomain to your 
                // domain name and MyAccessAccount to the name 
                // you use to access your domain.
                RemoveFileSecurity(FileName, @"MyDomain\MyAccessAccount", 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)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

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

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

            // Set the new access settings.
            fInfo.SetAccessControl(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)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

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

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

            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);

        }
    }
}
//This code produces output similar to the following; 
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//

FileIOPermission

Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.NoAccess, F:System.Security.AccessControl.AccessControlActions.Change

Security Action: Demand

For permission to access the file.

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