C#檔案夾許可權操作整理

來源:互聯網
上載者:User

標籤:user   style   修改   建立   color   foreach   將不   author   檔案   

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

取得目錄的存取控制和審核安全(ACL)

DirectorySecurity fileAcl = Directory.GetAccessControl(filePath);

檔案夾許可權繼承控制

fileAcl.SetAccessRuleProtection(true, true);//取消許可權繼承,且保留繼承的訪問規則fileAcl.SetAccessRuleProtection(true, true);//取消許可權繼承,且移除繼承的訪問規則fileAcl.SetAccessRuleProtection(false, true);//允許許可權繼承,且忽略第二個參數

訪問規則存取控制項目建立

FileSystemAccessRule everyoneRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);FileSystemAccessRule everyoneRule1 = new FileSystemAccessRule("Everyone", FileSystemRights.Modify, AccessControlType.Allow);
            //"Everyone"使用者賬戶名稱
            //FileSystemRights.FullControl 訪問規則
            //AccessControlType.Allow 允許訪問受保護對象,AccessControlType.Deny拒絕訪問受保護對象
SID也就是安全性識別碼(Security Identifiers),是標識使用者、組和電腦帳戶的唯一的號碼。在第一次建立該帳戶時,
將給網路上的每一個帳戶發布一個唯一的 SID。Windows 2000 中的內部進程將引用帳戶的 SID 而不是帳戶的使用者或組名。
如果建立帳戶,再刪除帳戶,然後使用相同的使用者名稱建立另一個帳戶,則新帳戶將不具有授權給前一個帳戶的權力或許可權,
原因是該帳戶具有不同的 S識別碼。安全性識別碼也被稱為安全性識別碼 或 SID。

修改存取控制清單(ACL)

            bool result = false;            //將指定的授權規則添加到存取控制清單 (ACL)。            fileAcl.ModifyAccessRule(AccessControlModification.Add, everyoneRule,out result);            //從 ACL 移除所含安全性標識符 (SID) 和存取遮罩與指定授權規則一樣的授權規則。            fileAcl.ModifyAccessRule(AccessControlModification.Remove, everyoneRule, out result);           //從 ACL 移除所含 SID 與指定授權規則一樣的授權規則。            fileAcl.ModifyAccessRule(AccessControlModification.RemoveAll, everyoneRule, out result);            //從 ACL 移除與指定的授權規則完全符合的授權規則。            fileAcl.ModifyAccessRule(AccessControlModification.RemoveSpecific, everyoneRule, out result);            //從 ACL 移除所含 SID 與指定授權規則一樣的授權規則,然後將指定的授權規則添加到 ACL。             fileAcl.ModifyAccessRule(AccessControlModification.Reset, everyoneRule, out result);            //從 ACL 移除所有授權規則,然後將指定的授權規則添加到 ACL。            fileAcl.ModifyAccessRule(AccessControlModification.Set, everyoneRule, out result);            //許可權追加            fileAcl.AddAccessRule(everyoneRule);            //許可權刪除            fileAcl.RemoveAccessRule(everyoneRule);            //從當前檔案或目錄移除所有匹配的允許或拒絕存取控制清單 (ACL) 許可權。            fileAcl.RemoveAccessRuleAll(everyoneRule);            //從當前檔案或目錄移除指定使用者的所有存取控制清單 (ACL) 許可權。            fileAcl.RemoveAccessRuleSpecific(everyoneRule);            //從當前檔案或目錄移除單個匹配的允許或拒絕存取控制清單 (ACL) 許可權。

遍曆ACL中的ACE

            AuthorizationRuleCollection rules = fileAcl.GetAccessRules(true, true, typeof(NTAccount));            // AuthorizationRule Rule = rules[0];            foreach (FileSystemAccessRule rule in rules)            {
if(rule.IdentityReference.Value.CompareTo("Users")==0)
{ fileAcl.RemoveAccessRule(rule);
} }

 

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.