用 C# 給檔案夾設定 NTFS 許可權(ACL)

來源:互聯網
上載者:User

引入名稱空間:

using System.Security.AccessControl;
using System.IO;

設定 NTFS 許可權:

DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();
 
FileSystemAccessRule newAccessRule = new FileSystemAccessRule(identity, rights,
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
    PropagationFlags.None,
    AccessControlType.Allow);
     
ds.AddAccessRule(newAccessRule);
di.SetAccessControl(ds);

參數

  • path 要設定 NTFS 許可權的檔案夾。
  • identity 使用者名稱。
  • rights FileSystemRights 對象,值為 FileSystemRights.Read、FileSystemRights.Write、FileSystemRights.FullControl 等,或者用“|”將多個許可權合起來。

InheritanceFlags 指定哪些接受許可權繼承

  • InheritanceFlags.ContainerInherit 下級檔案夾要繼承許可權。
  • InheritanceFlags.None 下級檔案夾、檔案都不繼承許可權。
  • InheritanceFlags.ObjectInherit 下級檔案要繼承許可權。

上面提到“檔案夾”、“檔案”,更準確的說法應該是“容器”、“葉對象”,因為它不僅僅用於檔案夾、檔案,還可能用於其他地方,比如註冊表許可權。

PropagationFlags 如何傳播許可權

  • PropagationFlags.InheritOnly 不對 path 作設定,只是傳播到下級。
  • PropagationFlags.None 不作設定,即既對 path 作設定,也傳播到下級。
  • PropagationFlags.NoPropagateInherit 只是對 path 作設定,不傳播到下級。

PropagationFlags 只是在 InheritanceFlags 不為 None 時才有意義。也就是說 InheritanceFlags 指定了哪類對象可接受許可權繼承(傳播),而 PropagationFlags 指明了如何傳播這些許可權。

說明

要給檔案給檔案夾設定許可權,首先運行 C# 的帳戶要具有足夠的許可權。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.