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

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

例外

directorySecurity 参数 null

找不到目录。

path 无效。

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

-或-

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

注解

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

谨慎

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

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

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

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

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

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

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

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

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

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

适用于

另请参阅