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

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

例外

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

path 参数 null

找不到该文件。

path 参数指定了只读文件。

-或-

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

-或-

path 参数指定了目录。

-或-

调用方没有所需的权限。

fileSecurity 参数 null

注解

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

谨慎

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

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

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

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

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

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

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

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

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

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

适用于

另请参阅