(0) exportieren 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

FileInfo.SetAccessControl-Methode

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
Typ: System.Security.AccessControl.FileSecurity
Ein FileSecurity-Objekt, das einen Eintrag in einer Zugriffssteuerungsliste beschreibt, der auf die aktuelle Datei angewendet werden soll.

AusnahmeBedingung
ArgumentNullException

Der fileSecurity-Parameter ist null.

SystemException

Die Datei wurde nicht gefunden und konnte nicht 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 wendet Einträge in der Zugriffssteuerungsliste auf die aktuelle Datei an, die die nicht geerbte Zugriffssteuerungsliste darstellt.

Verwenden Sie stets die SetAccessControl-Methode, wenn Sie einer Datei Einträge in einer Zugriffssteuerungsliste hinzufügen oder diese Einträge aus einer Datei entfernen müssen.

WarnhinweisVorsicht

Die für den fileSecurity-Parameter angegebene Zugriffssteuerungsliste ersetzt die vorhandene Zugriffssteuerungsliste für die Datei. Um Berechtigungen für einen neuen Benutzer hinzuzufügen, rufen Sie mit der GetAccessControl-Methode die vorhandene Zugriffssteuerungsliste ab, ändern Sie diese, und verwenden Sie dann SetAccessControl, um sie wieder auf die Datei anzuwenden.

Eine ACL beschreibt einzelne Benutzer und/oder Gruppen, die über Rechte für bestimmte Aktionen für die angegebene Datei verfügen oder nicht 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 FileSecurity-Objekte bei, die nach der Erstellung geändert wurden. Wenn ein FileSecurity-Objekt nicht geändert wurde, wird es nicht als Datei beibehalten. Es ist daher nicht möglich, ein und dasselbe FileSecurity-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 FileSecurity-Objekt mithilfe der GetAccessControl-Methode aus der Quelldatei ab.

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

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

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

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

Im folgenden Codebeispiel werden die GetAccessControl-Methode und die SetAccessControl-Methode verwendet, um einer Datei einen Eintrag in der Zugriffssteuerungsliste hinzuzufügen und diesen dann wieder aus der Datei 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 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.
//


.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

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:
© 2014 Microsoft