DirectoryInfo.GetAccessControl Metod

Definition

Hämtar åtkomstkontrollistan (ACL) poster för den aktuella katalogen.

Överlagringar

Name Description
GetAccessControl()

Hämtar ett DirectorySecurity objekt som kapslar in åtkomstkontrollistan (ACL) poster för katalogen som beskrivs av det aktuella DirectoryInfo objektet.

GetAccessControl(AccessControlSections)

Hämtar ett DirectorySecurity objekt som kapslar in den angivna typen av åtkomstkontrollistaposter (ACL) för katalogen som beskrivs av det aktuella DirectoryInfo objektet.

Kommentarer

Använd GetAccessControl metoder för att hämta poster i åtkomstkontrollistan (ACL) för den aktuella filen.

Mer information finns i Så här lägger du till eller tar bort poster för åtkomstkontrollistan.

GetAccessControl()

Hämtar ett DirectorySecurity objekt som kapslar in åtkomstkontrollistan (ACL) poster för katalogen som beskrivs av det aktuella DirectoryInfo objektet.

public:
 System::Security::AccessControl::DirectorySecurity ^ GetAccessControl();
public System.Security.AccessControl.DirectorySecurity GetAccessControl();
member this.GetAccessControl : unit -> System.Security.AccessControl.DirectorySecurity
Public Function GetAccessControl () As DirectorySecurity

Returer

Ett DirectorySecurity objekt som kapslar in åtkomstkontrollreglerna för katalogen.

Undantag

Det gick inte att hitta eller ändra katalogen.

Katalogen är skrivskyddad.

-eller-

Den här åtgärden stöds inte på den aktuella plattformen.

-eller-

Anroparen har inte den behörighet som krävs.

Ett I/O-fel uppstod när katalogen öppnades.

Exempel

I följande exempel används GetAccessControl metoderna och SetAccessControl för att lägga till och sedan ta bort en åtkomstkontrollistapost (ACL) från en katalog.

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 DirectoryName,
            string Account,
            FileSystemRights Rights,
            AccessControlType ControlType
            )
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new(DirectoryName);

            // 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 DirectoryName,
            string Account,
            FileSystemRights Rights,
            AccessControlType ControlType
            )
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new(DirectoryName);

            // 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);
        }
    }
}
open System
open System.IO
open System.Security.AccessControl

// Adds an ACL entry on the specified directory for the specified account.
let addDirectorySecurity fileName (account: string) rights controlType =
    // Create a new DirectoryInfo object.
    let dInfo = DirectoryInfo fileName

    // Get a DirectorySecurity object that represents the
    // current security settings.
    let dSecurity = dInfo.GetAccessControl()

    // Add the FileSystemAccessRule to the security settings.
    dSecurity.AddAccessRule(FileSystemAccessRule(account, rights, controlType))

    // Set the new access settings.
    dInfo.SetAccessControl dSecurity

// Removes an ACL entry on the specified directory for the specified account.
let removeDirectorySecurity fileName (account: string) rights controlType =
    // Create a new DirectoryInfo object.
    let dInfo = DirectoryInfo fileName

    // Get a DirectorySecurity object that represents the
    // current security settings.
    let dSecurity = dInfo.GetAccessControl()

    // Add the FileSystemAccessRule to the security settings.
    dSecurity.RemoveAccessRule(FileSystemAccessRule(account, rights, controlType)) |> ignore

    // Set the new access settings.
    dInfo.SetAccessControl dSecurity

try
    let DirectoryName = "TestDirectory"

    printfn $"Adding access control entry for {DirectoryName}"

    // Add the access control entry to the directory.
    addDirectorySecurity DirectoryName @"MYDOMAIN\MyAccount" FileSystemRights.ReadData AccessControlType.Allow

    printfn $"Removing access control entry from {DirectoryName}"

    // Remove the access control entry from the directory.
    removeDirectorySecurity DirectoryName @"MYDOMAIN\MyAccount" FileSystemRights.ReadData AccessControlType.Allow

    printfn "Done."
with e ->
    printfn $"{e}"
Imports System.IO
Imports System.Security.AccessControl



Module DirectoryExample

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

        Console.ReadLine()

    End Sub


    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub


    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the 
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings. 
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

Kommentarer

Att anropa den här metodens överlagring motsvarar att anropa överlagringen av metoden och ange åtkomstkontrollavsnitten ( i Visual Basic).

En ACL beskriver individer och grupper som har, eller inte har, rättigheter till specifika åtgärder i den angivna filen eller katalogen. Mer information finns i Så här lägger du till eller tar bort poster för åtkomstkontrollistan.

Gäller för

GetAccessControl(AccessControlSections)

Hämtar ett DirectorySecurity objekt som kapslar in den angivna typen av åtkomstkontrollistaposter (ACL) för katalogen som beskrivs av det aktuella DirectoryInfo objektet.

public:
 System::Security::AccessControl::DirectorySecurity ^ GetAccessControl(System::Security::AccessControl::AccessControlSections includeSections);
public System.Security.AccessControl.DirectorySecurity GetAccessControl(System.Security.AccessControl.AccessControlSections includeSections);
member this.GetAccessControl : System.Security.AccessControl.AccessControlSections -> System.Security.AccessControl.DirectorySecurity
Public Function GetAccessControl (includeSections As AccessControlSections) As DirectorySecurity

Parametrar

includeSections
AccessControlSections

Ett av de AccessControlSections värden som anger vilken typ av åtkomstkontrollista (ACL) information som ska ta emot.

Returer

Ett DirectorySecurity objekt som kapslar in åtkomstkontrollreglerna för katalogen som beskrivs av det aktuella DirectoryInfo objektet.

Undantag

Det gick inte att hitta eller ändra katalogen.

Den aktuella processen har inte åtkomst till att öppna katalogen.
ELLER
Katalogen är skrivskyddad.
ELLER
Den här åtgärden stöds inte på den aktuella plattformen.
ELLER
Anroparen har inte den behörighet som krävs.

Ett I/O-fel uppstod när katalogen öppnades.

Kommentarer

GetAccessControl Använd metoden för att hämta poster i åtkomstkontrollistan (ACL) för den aktuella filen.

En ACL beskriver individer och grupper som har, eller inte har, rättigheter till specifika åtgärder i den angivna filen eller katalogen. Mer information finns i Så här lägger du till eller tar bort poster för åtkomstkontrollistan.

Gäller för