Procedura: aggiungere o rimuovere voci dell'elenco di controllo di accesso (solo .NET Framework)How to: Add or remove Access Control List entries (.NET Framework only)

Per aggiungere o rimuovere voci dell'elenco di controllo di accesso (ACL) in o da un file o una directory, ottenere l'oggetto FileSecurity o DirectorySecurity dal file o dalla directory.To add or remove Access Control List (ACL) entries to or from a file or directory, get the FileSecurity or DirectorySecurity object from the file or directory. Modificare l'oggetto e quindi applicarlo nuovamente al file o alla directory.Modify the object, and then apply it back to the file or directory.

Aggiungere o rimuovere una voce ACL da un fileAdd or remove an ACL entry from a file

  1. Chiamare il metodo File.GetAccessControl per ottenere un oggetto FileSecurity che contiene le voci ACL correnti di un file.Call the File.GetAccessControl method to get a FileSecurity object that contains the current ACL entries of a file.

  2. Aggiungere o rimuovere voci ACL dall'oggetto FileSecurity restituito dal passaggio 1.Add or remove ACL entries from the FileSecurity object returned from step 1.

  3. Per applicare le modifiche, passare l'oggetto FileSecurity al metodo File.SetAccessControl.To apply the changes, pass the FileSecurity object to the File.SetAccessControl method.

Aggiungere o rimuovere una voce ACL da una directoryAdd or remove an ACL entry from a directory

  1. Chiamare il metodo Directory.GetAccessControl per ottenere un oggetto DirectorySecurity che contiene le voci ACL correnti di una directory.Call the Directory.GetAccessControl method to get a DirectorySecurity object that contains the current ACL entries of a directory.

  2. Aggiungere o rimuovere voci ACL dall'oggetto DirectorySecurity restituito dal passaggio 1.Add or remove ACL entries from the DirectorySecurity object returned from step 1.

  3. Per applicare le modifiche, passare l'oggetto DirectorySecurity al metodo Directory.SetAccessControl.To apply the changes, pass the DirectorySecurity object to the Directory.SetAccessControl method.

EsempioExample

È necessario usare un utente o un account di gruppo valido per eseguire questo esempio.You must use a valid user or group account to run this example. L'esempio usa un oggetto File.The example uses a File object. Usare la stessa procedura per le classi FileInfo, Directory e DirectoryInfo.Use the same procedure for the FileInfo, Directory, and DirectoryInfo classes.

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)
        {

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

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

            // Set the new access settings.
            File.SetAccessControl(fileName, 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)
        {

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

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

            // Set the new access settings.
            File.SetAccessControl(fileName, 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)

        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

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

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        File.SetAccessControl(fileName, 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)

        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

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

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub
End Module