FileSystemSecurity.RemoveAccessRule(FileSystemAccessRule) Methode

Definition

Entfernt alle übereinstimmenden Zugriffssteuerungslistenberechtigungen (Access Control List, ACL) aus der aktuellen Datei oder dem aktuellen Verzeichnis.

public:
 bool RemoveAccessRule(System::Security::AccessControl::FileSystemAccessRule ^ rule);
public bool RemoveAccessRule (System.Security.AccessControl.FileSystemAccessRule rule);
override this.RemoveAccessRule : System.Security.AccessControl.FileSystemAccessRule -> bool
Public Function RemoveAccessRule (rule As FileSystemAccessRule) As Boolean

Parameter

rule
FileSystemAccessRule

Ein FileSystemAccessRule-Objekt, das eine Zugriffssteuerungsliste (Access Control List, ACL)-Berechtigung zum Entfernen aus einer Datei oder einem Verzeichnis darstellt.

Gibt zurück

true, wenn die Zugriffsregel entfernt wurde; andernfalls false.

Ausnahmen

Der parameter rule ist null.

Beispiele

Im folgenden Codebeispiel wird die FileSecurity Klasse verwendet, um einen Zugriffssteuerungslisteneintrag (Access Control List, ACL) aus einer Datei hinzuzufügen und daraus 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 = "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)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

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

            // Set the new access settings.
            fileInfo.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)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

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

            // Set the new access settings.
            fileInfo.SetAccessControl(fSecurity);
        }
    }
}
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim fileName As String = "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 e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal fileName As String, ByVal account As String,
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        Dim accessRule As New FileSystemAccessRule(account, rights, controlType)

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        fileInfo.SetAccessControl(fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String,
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

        ' Remove the FileSystemAccessRule from the security settings. 
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account,
            rights, controlType))

        ' Set the new access settings.
        fileInfo.SetAccessControl(fSecurity)

    End Sub
End Module

Hinweise

Die RemoveAccessRule-Methode entfernt entweder alle übereinstimmenden Deny Zugriffsregeln oder alle übereinstimmenden Allow Zugriffsregeln aus dem aktuellen FileSystemSecurity-Objekt. Sie können diese Methode beispielsweise verwenden, um alle Deny Zugriffsregeln für einen Benutzer zu entfernen, indem Sie ein FileSystemAccessRule Objekt übergeben, das mithilfe des Deny-Werts, des Read-Werts und eines Benutzerkontos erstellt wurde. In diesem Fall entfernt die RemoveAccessRule-Methode alle Verweigerungsregeln, die den Read Wert oder den Write Wert angeben.

Verwenden Sie die folgenden von der .NET-Implementierung abhängigen Methoden, um ACL-Informationen aus einer Datei hinzuzufügen oder abzurufen:

.NET-Implementierung Hinzufügen von Regeln Regeln abrufen
.NETTO FileSystemAclExtensions.SetAccessControl(FileInfo, FileSecurity) FileSystemAclExtensions.GetAccessControl(FileInfo)
.NET Framework FileInfo.SetAccessControl(FileSecurity) FileInfo.GetAccessControl()

Wenn Sie eine Zugriffsregel hinzufügen, ohne die Synchronize-Kennzeichnung festzulegen, wird die Synchronize-Kennzeichnung automatisch zu Ihrer Regel hinzugefügt. Wenn Sie die Regel später entfernen, ohne die Synchronize Kennzeichnung anzugeben, wird die Kennzeichnung automatisch entfernt.

Gilt für: