FileSystemSecurity.RemoveAccessRule(FileSystemAccessRule) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Supprime toutes les autorisations de liste de contrôle d’accès (ACL) autorisées ou refusées correspondantes du fichier ou du répertoire actif.
public:
bool RemoveAccessRule(System::Security::AccessControl::FileSystemAccessRule ^ rule);
public bool RemoveAccessRule (System.Security.AccessControl.FileSystemAccessRule rule);
override this.RemoveAccessRule : System.Security.AccessControl.FileSystemAccessRule -> bool
Public Function RemoveAccessRule (rule As FileSystemAccessRule) As Boolean
Paramètres
- rule
- FileSystemAccessRule
Objet FileSystemAccessRule qui représente une autorisation de liste de contrôle d’accès (ACL) pour supprimer d’un fichier ou d’un répertoire.
Retours
true
si la règle d’accès a été supprimée ; sinon, false
.
Exceptions
Le paramètre rule
est null
.
Exemples
L’exemple de code suivant utilise la classe FileSecurity pour ajouter, puis supprimer une entrée de liste de contrôle d’accès (ACL) d’un fichier. Vous devez fournir 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)
{
FileInfo fileInfo = new(fileName);
FileSecurity fSecurity = fileInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
fileInfo.SetAccessControl(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)
{
FileInfo fileInfo = new(fileName);
FileSecurity fSecurity = fileInfo.GetAccessControl();
// Remove the FileSystemAccessRule from the security settings.
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
fileInfo.SetAccessControl(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)
Dim fileInfo As New FileInfo(fileName)
Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()
' Add the FileSystemAccessRule to the security settings.
Dim accessRule As New FileSystemAccessRule(account, rights, controlType)
fSecurity.AddAccessRule(accessRule)
' Set the new access settings.
fileInfo.SetAccessControl(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)
Dim fileInfo As New FileInfo(fileName)
Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()
' Remove the FileSystemAccessRule from the security settings.
fSecurity.RemoveAccessRule(New FileSystemAccessRule(account,
rights, controlType))
' Set the new access settings.
fileInfo.SetAccessControl(fSecurity)
End Sub
End Module
Remarques
La méthode RemoveAccessRule supprime toutes les règles d’accès Deny correspondantes ou toutes les règles d’accès Allow correspondantes de l’objet FileSystemSecurity actuel. Par exemple, vous pouvez utiliser cette méthode pour supprimer toutes les règles d’accès Deny pour un utilisateur en passant un objet FileSystemAccessRule créé à l’aide de la valeur Deny, de la valeur Read et d’un compte d’utilisateur. Lorsque vous effectuez cette opération, la méthode RemoveAccessRule supprime toutes les règles de refus qui spécifient la valeur Read ou la valeur Write.
Utilisez les méthodes dépendantes de l’implémentation .NET suivantes pour ajouter ou récupérer des informations de liste de contrôle d’accès à partir d’un fichier :
Implémentation .NET | Ajouter des règles | Récupérer des règles |
---|---|---|
.FILET | FileSystemAclExtensions.SetAccessControl(FileInfo, FileSecurity) | FileSystemAclExtensions.GetAccessControl(FileInfo) |
.NET Framework | FileInfo.SetAccessControl(FileSecurity) | FileInfo.GetAccessControl() |
Lorsque vous ajoutez une règle d’accès sans définir l’indicateur de Synchronize, l’indicateur de Synchronize est automatiquement ajouté à votre règle. Si vous supprimez la règle ultérieurement sans spécifier l’indicateur de Synchronize, l’indicateur est automatiquement supprimé.