SetAccessControl Méthode (String, FileSecurity)
Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

File.SetAccessControl, méthode (String, FileSecurity)

 

Applique les entrées de liste de contrôle d'accès (ACL) décrites par un objet FileSecurity au répertoire spécifié.

Espace de noms:   System.IO
Assembly:  mscorlib (dans mscorlib.dll)

public static void SetAccessControl(
	string path,
	FileSecurity fileSecurity
)

Paramètres

path
Type: System.String

Fichier dans lequel les entrées ACL doivent être ajoutées ou supprimées.

fileSecurity
Type: System.Security.AccessControl.FileSecurity

Objet FileSecurity qui décrit une entrée ACL à appliquer au fichier décrit par le paramètre path.

Exception Condition
IOException

Une erreur d’E/S s’est produite lors de l’ouverture du fichier.

SEHException

Le paramètre path a la valeur null.

SystemException

Le fichier est introuvable.

UnauthorizedAccessException

Le paramètre path a spécifié un fichier accessible en lecture seule.

ou

Cette opération n'est pas prise en charge sur la plateforme actuelle.

ou

Le paramètre path a spécifié un répertoire.

ou

L'appelant n'a pas l'autorisation requise.

ArgumentNullException

Le paramètre fileSecurity a la valeur null.

Le SetAccessControl méthode applique les entrées de contrôle d'accès (ACL) de liste à un fichier qui représente la liste ACL non héritée.

System_CAPS_cautionAttention

La liste ACL spécifiée pour le fileSecurity paramètre remplace la liste ACL existante pour le fichier. Pour ajouter des autorisations pour un nouvel utilisateur, utilisez la GetAccessControl méthode pour obtenir la liste ACL existante, modifiez-la, puis utilisez SetAccessControl pour l'appliquer au fichier.

Une liste ACL décrit les individus et/ou les groupes qui disposent ou pas de droits à des actions spécifiques sur le fichier donné. Pour plus d'informations, consultez Comment : ajouter ou supprimer des entrées dans la liste de contrôle d'accès.

Le SetAccessControl méthode persiste uniquement FileSecurity les objets qui ont été modifiées après la création d'objets.  Si un FileSecurity objet n'a pas été modifié, il n'est pas persistant dans un fichier.  Par conséquent, il n'est pas possible de récupérer un FileSecurity de l'objet à partir d'un fichier et de réappliquer le même objet à un autre fichier.

Pour copier les informations ACL à partir d'un fichier vers un autre :

  1. Utilisez la GetAccessControl méthode pour récupérer le FileSecurity objet à partir du fichier source.

  2. Créer un nouveau FileSecurity objet pour le fichier de destination.

  3. Utilisez la GetSecurityDescriptorBinaryForm ou GetSecurityDescriptorSddlForm méthode de la source FileSecurity objet pour récupérer les informations ACL.

  4. Utilisez la SetSecurityDescriptorBinaryForm ou SetSecurityDescriptorSddlForm méthode pour copier les informations récupérées à l'étape 3 vers la destination FileSecurity objet.

  5. Définir la destination FileSecurity objet vers le fichier de destination à l'aide du SetAccessControl (méthode).

Dans les environnements NTFS, ReadAttributes et ReadExtendedAttributes sont accordées à l'utilisateur si l'utilisateur a ListDirectory droits sur le dossier parent. Pour refuser ReadAttributes et ReadExtendedAttributes, refuser ListDirectory sur le répertoire parent.

Le code suivant exemple utilise le GetAccessControl et SetAccessControl les méthodes pour ajouter et supprimer ensuite un accès contrôlent l'entrée de liste (ACL) à partir d'un fichier. Vous devez entrer un compte d'utilisateur ou de groupe valide pour exécuter cet exemple.

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

        }
    }
}

FileIOPermission

for permission to access the file. Security action: Demand. Associated enumerations: F:System.Security.Permissions.FileIOPermissionAccess.NoAccess, F:System.Security.AccessControl.AccessControlActions.Change

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher:
© 2016 Microsoft