語言

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 描述 ACL 條目,應用於參數描述 path 的檔案的物件。

例外狀況

開啟檔案時發生 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. 使用GetSecurityDescriptorBinaryForm來源GetSecurityDescriptorSddlForm物件的 or FileSecurity 方法來取得 ACL 資訊。

  4. 使用 SetSecurityDescriptorBinaryForm OR SetSecurityDescriptorSddlForm 方法將步驟 3 中取得的資訊複製到目標 FileSecurity 物件。

  5. 用這個FileSecurity方法把目標SetAccessControl物件設定成目標檔案。

在 NTFS 環境中, ReadAttributes 若 ReadExtendedAttributes 使用者擁有 ListDirectory 父資料夾的權限,則會授予使用者。 在父目錄中拒絕ReadAttributesReadExtendedAttributes和 , 拒絕ListDirectory。

適用於

另請參閱