File.SetAccessControl(String, FileSecurity) 方法

定义

将对象描述 FileSecurity 的访问控制列表(ACL)条目应用于指定文件。

public:
 static void SetAccessControl(System::String ^ path, System::Security::AccessControl::FileSecurity ^ fileSecurity);
public static void SetAccessControl(string path, System.Security.AccessControl.FileSecurity fileSecurity);
static member SetAccessControl : string * System.Security.AccessControl.FileSecurity -> unit
Public Shared Sub SetAccessControl (path As String, fileSecurity As FileSecurity)

参数

path
String

要从中添加或删除访问控制列表(ACL)条目的文件。

fileSecurity
FileSecurity

描述 FileSecurity 要应用于参数描述 path 的文件的 ACL 条目的对象。

例外

打开文件时出现 I/O 错误。

参数 pathnull.

找不到该文件。

参数 path 指定了只读文件。

-或-

当前平台上不支持此操作。

-或-

参数 path 指定了目录。

-或-

调用方没有所需的权限。

参数 fileSecuritynull.

注解

该方法 SetAccessControl 将访问控制列表 (ACL) 条目应用于表示非已加入的 ACL 列表的文件。

Caution

fileSecurity 参数指定的 ACL 将替换文件的现有 ACL。 若要为新用户添加权限,请使用 GetAccessControl 该方法获取现有 ACL、修改它,然后使用 SetAccessControl 该方法将其应用回文件。

ACL 描述对给定文件执行特定操作或无权执行的人员和组。 有关详细信息,请参阅 “如何:添加或删除访问控制列表条目”。

该方法 SetAccessControlFileSecurity 保留创建对象后已修改的对象。 FileSecurity如果对象尚未修改,则不会将其保存到文件中。 因此,无法从一个文件中检索对象 FileSecurity ,并将同一对象重新应用到另一个文件。

将 ACL 信息从一个文件复制到另一个文件:

  1. GetAccessControl使用该方法从源文件中检索FileSecurity对象。

  2. 为目标文件创建新 FileSecurity 对象。

  3. GetSecurityDescriptorBinaryForm使用源GetSecurityDescriptorSddlForm对象的或FileSecurity方法检索 ACL 信息。

  4. SetSecurityDescriptorBinaryForm使用或SetSecurityDescriptorSddlForm方法将步骤 3 中检索到的信息复制到目标FileSecurity对象。

  5. 使用FileSecurity该方法将目标SetAccessControl对象设置为目标文件。

在 NTFS 环境中,如果用户具有ReadAttributes父文件夹的权限,ReadExtendedAttributesListDirectory向用户授予该权限。 若要拒绝 ReadAttributesReadExtendedAttributes拒绝父目录,请拒绝 ListDirectory

适用于

另请参阅