File.GetAccessControl Método

Definición

Obtiene un objeto FileSecurity que encapsula las entradas de la lista de control de acceso (ACL) para un archivo especificado.

Sobrecargas

GetAccessControl(String, AccessControlSections)

Obtiene un objeto FileSecurity que encapsula el tipo especificado de las entradas de la lista de control de acceso (ACL) para un archivo determinado.

GetAccessControl(String)

Obtiene un objeto FileSecurity que encapsula las entradas de la lista de control de acceso (ACL) para un archivo especificado.

Comentarios

Use los GetAccessControl métodos para recuperar las entradas de la lista de control de acceso (ACL) de un archivo especificado.

GetAccessControl(String, AccessControlSections)

Obtiene un objeto FileSecurity que encapsula el tipo especificado de las entradas de la lista de control de acceso (ACL) para un archivo determinado.

public:
 static System::Security::AccessControl::FileSecurity ^ GetAccessControl(System::String ^ path, System::Security::AccessControl::AccessControlSections includeSections);
public static System.Security.AccessControl.FileSecurity GetAccessControl (string path, System.Security.AccessControl.AccessControlSections includeSections);
static member GetAccessControl : string * System.Security.AccessControl.AccessControlSections -> System.Security.AccessControl.FileSecurity
Public Shared Function GetAccessControl (path As String, includeSections As AccessControlSections) As FileSecurity

Parámetros

path
String

Ruta de acceso a un archivo que contiene un objeto FileSecurity que describe la información de la lista de control de acceso (ACL) del archivo.

includeSections
AccessControlSections

Uno de los valores AccessControlSections que especifica el tipo de información de la lista de control de acceso (ACL) que se recibe.

Devoluciones

Objeto FileSecurity que encapsula las reglas de control de acceso correspondientes al archivo descrito por el parámetro path.

Excepciones

Se produjo un error de E/S al abrir el archivo.

El parámetro path es null.

No se encuentra el archivo.

El parámetro path especificó un archivo que es de solo lectura.

o bien

Esta operación no es compatible con la plataforma actual.

o bien

El parámetro path especificó un directorio.

o bien

El llamador no dispone del permiso requerido.

Comentarios

Use el GetAccessControl método para recuperar las entradas de la lista de control de acceso (ACL) de un archivo.

Una ACL describe a individuos o grupos que tienen derechos, o no, a acciones específicas en el archivo especificado. Para obtener más información, vea Cómo: Agregar o quitar entradas de la lista de control de acceso.

En entornos NTFS, ReadAttributes y ReadExtendedAttributes se conceden al usuario si el usuario tiene ListDirectory derechos en la carpeta primaria. Para denegar ReadAttributes y ReadExtendedAttributes, denegar ListDirectory en el directorio primario.

Se aplica a

GetAccessControl(String)

Obtiene un objeto FileSecurity que encapsula las entradas de la lista de control de acceso (ACL) para un archivo especificado.

public:
 static System::Security::AccessControl::FileSecurity ^ GetAccessControl(System::String ^ path);
public static System.Security.AccessControl.FileSecurity GetAccessControl (string path);
static member GetAccessControl : string -> System.Security.AccessControl.FileSecurity
Public Shared Function GetAccessControl (path As String) As FileSecurity

Parámetros

path
String

Ruta de acceso a un archivo que contiene un objeto FileSecurity que describe la información de la lista de control de acceso (ACL) del archivo.

Devoluciones

Objeto FileSecurity que encapsula las reglas de control de acceso correspondientes al archivo descrito por el parámetro path.

Excepciones

Se produjo un error de E/S al abrir el archivo.

El parámetro path es null.

No se encuentra el archivo.

El parámetro path especificó un archivo que es de solo lectura.

o bien

Esta operación no es compatible con la plataforma actual.

o bien

El parámetro path especificó un directorio.

o bien

El llamador no dispone del permiso requerido.

Ejemplos

En el ejemplo de código siguiente se usan los GetAccessControl métodos y SetAccessControl para agregar y, a continuación, quitar una entrada de lista de control de acceso (ACL) de un archivo. Para ejecutar este ejemplo, debe proporcionar una cuenta de usuario o grupo válida.

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified file for the specified account.

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(gcnew 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.

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(gcnew FileSystemAccessRule
                                      (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.xml";

        Console::WriteLine("Adding access control entry for " + fileName);

        // Add the access control entry to the file.
        AddFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " + fileName);

        // Remove the access control entry from the file.
        RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
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);
        }
    }
}
open System.IO
open System.Security.AccessControl

// Adds an ACL entry on the specified file for the specified account.
let addFileSecurity fileName (account: string) rights controlType =
    // Get a FileSecurity object that represents the
    // current security settings.
    let fSecurity = File.GetAccessControl fileName

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

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

// Removes an ACL entry on the specified file for the specified account.
let removeFileSecurity fileName (account: string) rights controlType =
    // Get a FileSecurity object that represents the
    // current security settings.
    let fSecurity = File.GetAccessControl fileName

    // Remove the FileSystemAccessRule from the security settings.
    fSecurity.RemoveAccessRule(FileSystemAccessRule(account, rights, controlType))
    |> ignore

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

let fileName = "test.xml"

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

// Add the access control entry to the file.
addFileSecurity fileName @"DomainName\AccountName" FileSystemRights.ReadData AccessControlType.Allow

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

// Remove the access control entry from the file.
removeFileSecurity fileName @"DomainName\AccountName" FileSystemRights.ReadData AccessControlType.Allow

printfn "Done."
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

Comentarios

Use el GetAccessControl método para recuperar las entradas de la lista de control de acceso (ACL) de un archivo.

Una ACL describe a individuos o grupos que tienen derechos, o no, a acciones específicas en el archivo especificado. Para obtener más información, vea Cómo: Agregar o quitar entradas de la lista de control de acceso.

En entornos NTFS, ReadAttributes y ReadExtendedAttributes se conceden al usuario si el usuario tiene ListDirectory derechos en la carpeta primaria. Para denegar ReadAttributes y ReadExtendedAttributes, denegar ListDirectory en el directorio primario.

Se aplica a