共用方式為


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 專案。

例外狀況

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

適用於

另請參閱