FileSystemSecurity 类

定义

表示文件或目录的访问控制和审核安全性。

public ref class FileSystemSecurity abstract : System::Security::AccessControl::NativeObjectSecurity
public abstract class FileSystemSecurity : System.Security.AccessControl.NativeObjectSecurity
[System.Security.SecurityCritical]
public abstract class FileSystemSecurity : System.Security.AccessControl.NativeObjectSecurity
type FileSystemSecurity = class
    inherit NativeObjectSecurity
[<System.Security.SecurityCritical>]
type FileSystemSecurity = class
    inherit NativeObjectSecurity
Public MustInherit Class FileSystemSecurity
Inherits NativeObjectSecurity
继承
派生
属性

示例

下面的代码示例使用 FileSecurity 类添加和删除文件中的访问控制列表(ACL)条目。 必须提供有效的用户或组帐户才能运行此示例。

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

注解

FileSystemSecurity 类是 FileSecurityDirectorySecurity 类的基类。 这些类表示系统文件或目录的所有访问权限,并定义如何审核访问尝试。

FileSystemSecurity 类将访问和审核权限表示为一组规则。 每个访问规则由 FileSystemAccessRule 对象表示,而每个审核规则由 FileSystemAuditRule 对象表示。

FileSystemSecurity 类是基础Microsoft Windows 文件安全系统的抽象。 在此系统中,每个文件或目录都有一个自由访问控制列表(DACL),用于控制对文件或目录的访问,以及一个系统访问控制列表(SACL),该列表指定审核的访问控制尝试。 FileSystemAccessRuleFileSystemAuditRule 类是构成 DACL 和 SCL 的访问控制条目(ACE)的抽象。

FileSystemSecurity 类隐藏 DACL 和 SCL 的许多详细信息;无需担心 ACE 排序或 NULL DACLS。

使用以下依赖于 .NET 实现的方法从文件添加或检索 ACL 信息:

.NET 实现 添加规则 检索规则
。网 FileSystemAclExtensions.SetAccessControl(FileInfo, FileSecurity) FileSystemAclExtensions.GetAccessControl(FileInfo)
.NET Framework FileInfo.SetAccessControl(FileSecurity) FileInfo.GetAccessControl()

属性

AccessRightType

获取 FileSystemSecurity 类用来表示访问权限的枚举。

AccessRulesModified

获取或设置一个布尔值,该值指定是否已修改与此 ObjectSecurity 对象关联的访问规则。

(继承自 ObjectSecurity)
AccessRuleType

获取 FileSystemSecurity 类用于表示访问规则的枚举。

AreAccessRulesCanonical

获取一个布尔值,该值指定与此 ObjectSecurity 对象关联的访问规则是否按规范顺序排列。

(继承自 ObjectSecurity)
AreAccessRulesProtected

获取一个布尔值,该值指定是否保护与此 ObjectSecurity 对象关联的自由访问控制列表(DACL)。

(继承自 ObjectSecurity)
AreAuditRulesCanonical

获取一个布尔值,该值指定与此 ObjectSecurity 对象关联的审核规则是否按规范顺序排列。

(继承自 ObjectSecurity)
AreAuditRulesProtected

获取一个布尔值,该值指定与此 ObjectSecurity 对象关联的系统访问控制列表(SACL)是否受到保护。

(继承自 ObjectSecurity)
AuditRulesModified

获取或设置一个布尔值,该值指定是否已修改与此 ObjectSecurity 对象关联的审核规则。

(继承自 ObjectSecurity)
AuditRuleType

获取 FileSystemSecurity 类用来表示审核规则的类型。

GroupModified

获取或设置一个布尔值,该值指定是否已修改与安全对象关联的组。

(继承自 ObjectSecurity)
IsContainer

获取一个布尔值,该值指定此 ObjectSecurity 对象是否为容器对象。

(继承自 ObjectSecurity)
IsDS

获取一个布尔值,该值指定此 ObjectSecurity 对象是否为目录对象。

(继承自 ObjectSecurity)
OwnerModified

获取或设置一个布尔值,该值指定是否修改了安全对象所有者。

(继承自 ObjectSecurity)
SecurityDescriptor

获取此实例的安全描述符。

(继承自 ObjectSecurity)

方法

AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType)

使用指定的访问权限、访问控制和标志初始化表示指定用户的新访问控制规则的 FileSystemAccessRule 类的新实例。

AddAccessRule(AccessRule)

将指定的访问规则添加到与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)。

(继承自 CommonObjectSecurity)
AddAccessRule(FileSystemAccessRule)

将指定的访问控制列表 (ACL) 权限添加到当前文件或目录。

AddAuditRule(AuditRule)

将指定的审核规则添加到与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)。

(继承自 CommonObjectSecurity)
AddAuditRule(FileSystemAuditRule)

将指定的审核规则添加到当前文件或目录。

AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags)

初始化表示指定用户的指定审核规则的 FileSystemAuditRule 类的新实例。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetAccessRules(Boolean, Boolean, Type)

获取与指定安全标识符关联的访问规则的集合。

(继承自 CommonObjectSecurity)
GetAuditRules(Boolean, Boolean, Type)

获取与指定安全标识符关联的审核规则的集合。

(继承自 CommonObjectSecurity)
GetGroup(Type)

获取与指定所有者关联的主组。

(继承自 ObjectSecurity)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetOwner(Type)

获取与指定主组关联的所有者。

(继承自 ObjectSecurity)
GetSecurityDescriptorBinaryForm()

返回一个字节值数组,表示此 ObjectSecurity 对象的安全描述符信息。

(继承自 ObjectSecurity)
GetSecurityDescriptorSddlForm(AccessControlSections)

返回与此 ObjectSecurity 对象关联的安全描述符的指定节的安全描述符定义语言(SDDL)表示形式。

(继承自 ObjectSecurity)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ModifyAccess(AccessControlModification, AccessRule, Boolean)

将此 CommonObjectSecurity 对象关联的指定修改应用于与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)。

(继承自 CommonObjectSecurity)
ModifyAccessRule(AccessControlModification, AccessRule, Boolean)

将此 ObjectSecurity 对象关联的指定修改应用于与此 ObjectSecurity 对象关联的自由访问控制列表(DACL)。

(继承自 ObjectSecurity)
ModifyAudit(AccessControlModification, AuditRule, Boolean)

将指定的修改应用于与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)。

(继承自 CommonObjectSecurity)
ModifyAuditRule(AccessControlModification, AuditRule, Boolean)

将指定的修改应用于与此 ObjectSecurity 对象关联的系统访问控制列表(SACL)。

(继承自 ObjectSecurity)
Persist(Boolean, String, AccessControlSections)

将与此 ObjectSecurity 对象关联的安全描述符的指定节保存到永久存储。 建议将传递给构造函数的 includeSections 参数的值保持一致。

(继承自 ObjectSecurity)
Persist(SafeHandle, AccessControlSections)

将与此 NativeObjectSecurity 对象关联的安全描述符的指定节保存到永久存储。 建议保留传递给构造函数和持久方法的 includeSections 参数的值相同。

(继承自 NativeObjectSecurity)
Persist(SafeHandle, AccessControlSections, Object)

将与此 NativeObjectSecurity 对象关联的安全描述符的指定节保存到永久存储。 建议将传递给构造函数的 includeSections 参数的值保持一致。

(继承自 NativeObjectSecurity)
Persist(String, AccessControlSections)

将与此 NativeObjectSecurity 对象关联的安全描述符的指定节保存到永久存储。 建议将传递给构造函数的 includeSections 参数的值保持一致。

(继承自 NativeObjectSecurity)
Persist(String, AccessControlSections, Object)

将与此 NativeObjectSecurity 对象关联的安全描述符的指定节保存到永久存储。 建议将传递给构造函数的 includeSections 参数的值保持一致。

(继承自 NativeObjectSecurity)
PurgeAccessRules(IdentityReference)

删除与指定 IdentityReference关联的所有访问规则。

(继承自 ObjectSecurity)
PurgeAuditRules(IdentityReference)

删除与指定 IdentityReference关联的所有审核规则。

(继承自 ObjectSecurity)
ReadLock()

锁定此 ObjectSecurity 对象进行读取访问。

(继承自 ObjectSecurity)
ReadUnlock()

解锁此 ObjectSecurity 对象进行读取访问。

(继承自 ObjectSecurity)
RemoveAccessRule(AccessRule)

从与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)中删除包含与指定访问规则相同的安全标识符和访问掩码的访问规则。

(继承自 CommonObjectSecurity)
RemoveAccessRule(FileSystemAccessRule)

从当前文件或目录中删除所有匹配的允许或拒绝访问控制列表(ACL)权限。

RemoveAccessRuleAll(AccessRule)

从与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)中删除与指定访问规则具有相同安全标识符的所有访问规则。

(继承自 CommonObjectSecurity)
RemoveAccessRuleAll(FileSystemAccessRule)

从当前文件或目录中删除指定用户的所有访问控制列表(ACL)权限。

RemoveAccessRuleSpecific(AccessRule)

从与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)中删除与指定访问规则完全匹配的所有访问规则。

(继承自 CommonObjectSecurity)
RemoveAccessRuleSpecific(FileSystemAccessRule)

从当前文件或目录中删除单个匹配的允许或拒绝访问控制列表(ACL)权限。

RemoveAuditRule(AuditRule)

从与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)中删除包含与指定的审核规则相同的安全标识符和访问掩码的审核规则。

(继承自 CommonObjectSecurity)
RemoveAuditRule(FileSystemAuditRule)

从当前文件或目录中删除所有匹配的允许或拒绝审核规则。

RemoveAuditRuleAll(AuditRule)

从与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)中删除与指定的审核规则具有相同安全标识符的所有审核规则。

(继承自 CommonObjectSecurity)
RemoveAuditRuleAll(FileSystemAuditRule)

从当前文件或目录中删除指定用户的所有审核规则。

RemoveAuditRuleSpecific(AuditRule)

从与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)中删除与指定的审核规则完全匹配的所有审核规则。

(继承自 CommonObjectSecurity)
RemoveAuditRuleSpecific(FileSystemAuditRule)

从当前文件或目录中删除单个匹配的允许或拒绝审核规则。

ResetAccessRule(AccessRule)

删除与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)中的所有访问规则,然后添加指定的访问规则。

(继承自 CommonObjectSecurity)
ResetAccessRule(FileSystemAccessRule)

将指定的访问控制列表 (ACL) 权限添加到当前文件或目录,并删除所有匹配的 ACL 权限。

SetAccessRule(AccessRule)

删除与与此 CommonObjectSecurity 对象关联的自由访问控制列表(DACL)中包含与指定访问规则相同的安全标识符和限定符的所有访问规则,然后添加指定的访问规则。

(继承自 CommonObjectSecurity)
SetAccessRule(FileSystemAccessRule)

设置当前文件或目录的指定访问控制列表 (ACL) 权限。

SetAccessRuleProtection(Boolean, Boolean)

设置或删除与此 ObjectSecurity 对象关联的访问规则的保护。 父对象无法通过继承修改受保护的访问规则。

(继承自 ObjectSecurity)
SetAuditRule(AuditRule)

删除与与此 CommonObjectSecurity 对象关联的系统访问控制列表(SACL)中包含与指定的审核规则相同的安全标识符和限定符的所有审核规则,然后添加指定的审核规则。

(继承自 CommonObjectSecurity)
SetAuditRule(FileSystemAuditRule)

设置当前文件或目录的指定审核规则。

SetAuditRuleProtection(Boolean, Boolean)

设置或删除与此 ObjectSecurity 对象关联的审核规则的保护。 父对象无法通过继承修改受保护的审核规则。

(继承自 ObjectSecurity)
SetGroup(IdentityReference)

设置与此 ObjectSecurity 对象关联的安全描述符的主组。

(继承自 ObjectSecurity)
SetOwner(IdentityReference)

设置与此 ObjectSecurity 对象关联的安全描述符的所有者。

(继承自 ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[])

从指定的字节值数组中设置此 ObjectSecurity 对象的安全描述符。

(继承自 ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections)

从指定的字节值数组中设置此 ObjectSecurity 对象的安全描述符的指定节。

(继承自 ObjectSecurity)
SetSecurityDescriptorSddlForm(String)

从指定的安全描述符定义语言(SDDL)字符串设置此 ObjectSecurity 对象的安全描述符。

(继承自 ObjectSecurity)
SetSecurityDescriptorSddlForm(String, AccessControlSections)

从指定的安全描述符定义语言(SDDL)字符串设置此 ObjectSecurity 对象的安全描述符的指定节。

(继承自 ObjectSecurity)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
WriteLock()

锁定此 ObjectSecurity 对象进行写入访问。

(继承自 ObjectSecurity)
WriteUnlock()

解锁此 ObjectSecurity 对象进行写入访问。

(继承自 ObjectSecurity)

适用于