System.IO.File.GetAccessControl 方法 (String)

方法描述

获取一个 FileSecurity 对象,它封装指定文件的访问控制列表 (ACL) 条目。

语法定义(C# System.IO.File.GetAccessControl 方法 (String) 的用法)

public static FileSecurity GetAccessControl(
	string path
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
path System-String 一个文件的路径,该文件包含描述文件的访问控制列表 (ACL) 信息的 FileSecurity 对象。
返回值 System.Security.AccessControl.FileSecurity 一个 FileSecurity 对象,它封装由 path 参数描述的文件的访问控制规则。

提示和注释

使用 GetAccessControl 方法检索文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和(或)组。 有关更多信息,请参见ACL 技术概述和如何:添加或移除访问控制列表项。

在 NTFS 环境中,如果用户对父文件夹具有 ListDirectory 权限,则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。 若要拒绝 ReadAttributes 和 ReadExtendedAttributes,请在父目录上拒绝 ListDirectory。

System.IO.File.GetAccessControl 方法 (String)例子

您必须提供有效的用户或组帐户才能运行此示例。

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

        }
    }
}

异常

异常 异常描述
IOException 打开文件时发生了 I/O 错误。
SEHException path 参数为 null。
SystemException 未能找到文件。
UnauthorizedAccessException
  • path 参数指定了一个只读文件。
  • 在当前平台上不支持此操作。
  • path 参数指定了一个目录。
  • 调用方没有所要求的权限。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。