Directory.SetAccessControl(String, DirectorySecurity) 方法

定义

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

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

参数

path
String

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

directorySecurity
DirectorySecurity

描述 DirectorySecurity 要应用于参数描述 path 的目录的 ACL 条目的对象。

例外

参数 directorySecuritynull.

找不到目录。

无效 path

当前进程无权访问指定的 path目录。

-或-

当前进程没有足够的权限来设置 ACL 条目。

注解

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

Caution

directorySecurity 参数指定的 ACL 将替换目录的现有 ACL。 若要为新用户添加权限,请使用 GetAccessControl 该方法获取现有 ACL 并对其进行修改。

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

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

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

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

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

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

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

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

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

适用于

另请参阅