FileInfo.GetAccessControl 方法    
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象描述的文件的访问控制列表(ACL)条目。
重载
| GetAccessControl() | 获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象描述的文件的访问控制列表(ACL)条目。 | 
| GetAccessControl(AccessControlSections) | 获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象描述的文件的访问控制列表 (ACL) 条目的指定类型。 | 
GetAccessControl()
获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象描述的文件的访问控制列表(ACL)条目。
public:
 System::Security::AccessControl::FileSecurity ^ GetAccessControl();public System.Security.AccessControl.FileSecurity GetAccessControl();member this.GetAccessControl : unit -> System.Security.AccessControl.FileSecurityPublic Function GetAccessControl () As FileSecurity返回
封装当前文件的访问控制规则的 FileSecurity 对象。
例外
打开文件时出现 I/O 错误。
当前系统帐户没有管理权限。
找不到该文件。
示例
下面的代码示例使用 GetAccessControl 方法和 SetAccessControl 方法添加和删除文件中的访问控制列表 (ACL) 条目。 必须提供有效的用户或组帐户才能运行此示例。
using System;
using System.IO;
using System.Security.AccessControl;
namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "c:/test.xml";
                Console.WriteLine("Adding access control entry for " + FileName);
                // Add the access control entry to the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                AddFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);
                Console.WriteLine("Removing access control entry from " + FileName);
                // Remove the access control entry from the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                RemoveFileSecurity(FileName, @"MyDomain\MyAccessAccount", 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
            )
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new(FileName);
            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();
            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));
            // Set the new access settings.
            fInfo.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
            )
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new(FileName);
            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();
            // Add the FileSystemAccessRule to the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));
            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//
Imports System.IO
Imports System.Security.AccessControl
Module FileExample
    Sub Main()
        Try
            Dim FileName As String = "c:\test.xml"
            Console.WriteLine("Adding access control entry for " & FileName)
            ' Add the access control entry to the file.
            ' Before compiling this snippet, change MyDomain to your 
            ' domain name and MyAccessAccount to the name 
            ' you use to access your domain.
            AddFileSecurity(FileName, "MyDomain\\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow)
            Console.WriteLine("Removing access control entry from " & FileName)
            ' Remove the access control entry from the file.
            ' Before compiling this snippet, change MyDomain to your 
            ' domain name and MyAccessAccount to the name 
            ' you use to access your domain.
            RemoveFileSecurity(FileName, "MyDomain\\MyAccessAccount", 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)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()
        ' Add the FileSystemAccessRule to the security settings. 
        fSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))
        ' Set the new access settings.
        fInfo.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)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()
        ' Add the FileSystemAccessRule to the security settings. 
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))
        ' Set the new access settings.
        fInfo.SetAccessControl(fSecurity)
    End Sub
End Module
'This code produces output similar to the following; 
'results may vary based on the computer/file structure/etc.:
'
'Adding access control entry for c:\test.xml
'Removing access control entry from c:\test.xml
'Done.
'
注解
使用 GetAccessControl 方法检索当前文件的访问控制列表(ACL)条目。
ACL 描述对给定文件执行特定操作或无权执行的人员和组。 有关详细信息,请参阅 如何:添加或删除访问控制列表项。
适用于
GetAccessControl(AccessControlSections)
获取一个 FileSecurity 对象,该对象封装当前 FileInfo 对象描述的文件的访问控制列表 (ACL) 条目的指定类型。
public:
 System::Security::AccessControl::FileSecurity ^ GetAccessControl(System::Security::AccessControl::AccessControlSections includeSections);public System.Security.AccessControl.FileSecurity GetAccessControl(System.Security.AccessControl.AccessControlSections includeSections);member this.GetAccessControl : System.Security.AccessControl.AccessControlSections -> System.Security.AccessControl.FileSecurityPublic Function GetAccessControl (includeSections As AccessControlSections) As FileSecurity参数
- includeSections
- AccessControlSections
指定要检索的访问控制条目组的 AccessControlSections 值之一。
返回
封装当前文件的访问控制规则的 FileSecurity 对象。
例外
打开文件时出现 I/O 错误。
当前系统帐户没有管理权限。
找不到该文件。
注解
使用 GetAccessControl 方法检索当前文件的访问控制列表(ACL)条目。
ACL 描述对给定文件执行特定操作或无权执行的人员和组。 有关详细信息,请参阅 如何:添加或删除访问控制列表项。