Läs på engelska Redigera

Dela via


DirectoryInfo.GetAccessControl Method

Definition

Gets the access control list (ACL) entries for the current directory.

Overloads

GetAccessControl()

Gets a DirectorySecurity object that encapsulates the access control list (ACL) entries for the directory described by the current DirectoryInfo object.

GetAccessControl(AccessControlSections)

Gets a DirectorySecurity object that encapsulates the specified type of access control list (ACL) entries for the directory described by the current DirectoryInfo object.

Remarks

Use GetAccessControl methods to retrieve the access control list (ACL) entries for the current file.

For more information, see How to: Add or Remove Access Control List Entries.

GetAccessControl()

Gets a DirectorySecurity object that encapsulates the access control list (ACL) entries for the directory described by the current DirectoryInfo object.

C#
public System.Security.AccessControl.DirectorySecurity GetAccessControl();

Returns

A DirectorySecurity object that encapsulates the access control rules for the directory.

Exceptions

The directory could not be found or modified.

The directory is read-only.

-or-

This operation is not supported on the current platform.

-or-

The caller does not have the required permission.

An I/O error occurred while opening the directory.

Examples

The following example uses the GetAccessControl and SetAccessControl methods to add and then remove an access control list (ACL) entry from a directory.

C#
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);
        }
    }
}

Remarks

Calling this method overload is equivalent to calling the GetAccessControl method overload and specifying the access control sections AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group (AccessControlSections.Access Or AccessControlSections.Owner Or AccessControlSections.Group in Visual Basic).

An ACL describes individuals and groups who have, or don't have, rights to specific actions on the given file or directory. For more information, see How to: Add or Remove Access Control List Entries.

Applies to

.NET Framework 4.8.1 och andra versioner
Produkt Versioner
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

GetAccessControl(AccessControlSections)

Gets a DirectorySecurity object that encapsulates the specified type of access control list (ACL) entries for the directory described by the current DirectoryInfo object.

C#
public System.Security.AccessControl.DirectorySecurity GetAccessControl(System.Security.AccessControl.AccessControlSections includeSections);

Parameters

includeSections
AccessControlSections

One of the AccessControlSections values that specifies the type of access control list (ACL) information to receive.

Returns

A DirectorySecurity object that encapsulates the access control rules for the directory described by the current DirectoryInfo object.

Exceptions

The directory could not be found or modified.

The current process does not have access to open the directory.
OR
The directory is read-only.
OR
This operation is not supported on the current platform.
OR
The caller does not have the required permission.

An I/O error occurred while opening the directory.

Remarks

Use the GetAccessControl method to retrieve the access control list (ACL) entries for the current file.

An ACL describes individuals and groups who have, or don't have, rights to specific actions on the given file or directory. For more information, see How to: Add or Remove Access Control List Entries.

Applies to

.NET Framework 4.8.1 och andra versioner
Produkt Versioner
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1