C 資料夾許可權操作整理

2021-08-21 18:30:39 字數 2598 閱讀 3379

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"使用者賬戶名稱

訪問規則

允許訪問受保護物件,accesscontroltype.deny拒絕訪問受保護物件

sid也就是安全識別符號(security identifiers),是標識使用者、組和計算機帳戶的唯一的號碼。在第一次建立該帳戶時,

將給網路上的每乙個帳戶發布乙個唯一的 sid。windows 2000 中的內部程序將引用帳戶的 sid 而不是帳戶的使用者或組名。

如果建立帳戶,再刪除帳戶,然後使用相同的使用者名稱建立另乙個帳戶,則新帳戶將不具有授權給前乙個帳戶的權力或許可權,

原因是該帳戶具有不同的 sid 號。安全識別符號也被稱為安全 id 或 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)

}

C 資料夾操作

去除字尾 獲取string最後乙個乙個字元 void main 讀取資料夾中所有檔名 include include include 忘了這個cout就無法輸出string型別。include include finddata t,findfirst,findnext,findclose要用 usi...

C 資料夾操作

author ricard.m.tan createtime 2020 4 2 11 52 41 using system.io using system.windows.forms using system.xml namespace chngz.paradise 複製檔案 public stat...

C 資料夾操作

一 資料夾操作 directory類,directoryinfo類.使用using system.io命名空間 一 建立資料夾 方法一 1 private string path f text ceshi 2 private void create click object sender,event...