共用方式為


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 錯誤。

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

適用於

另請參閱