[英]How to remove all deny permissions on a folder without hardcoding?
我正在使用微軟的RemoveDirectorySecurity
方法來刪除文件夾的權限。
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
DirectoryInfo dInfo = new DirectoryInfo(FileName);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
dInfo.SetAccessControl(dSecurity);
}
我使用Account
參數對其進行硬編碼以刪除所有權限。
private void RemoveAllDenyPermission(string tempDirectory, string userName)
{
RemoveDirectorySecurity(tempDirectory, "system", FileSystemRights.FullControl, AccessControlType.Allow);
RemoveDirectorySecurity(tempDirectory, "users", FileSystemRights.FullControl, AccessControlType.Allow);
RemoveDirectorySecurity(tempDirectory, "Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
RemoveDirectorySecurity(tempDirectory, "Administrators", FileSystemRights.FullControl, AccessControlType.Allow);
RemoveDirectorySecurity(tempDirectory, userName, FileSystemRights.FullControl, AccessControlType.Allow);
}
問題是,如果您擁有System
、 User
、 Everyone
、 Administrator
以外的帳戶,則該權限可能會保留。 有沒有辦法釋放所有賬號的權限?
我正在使用翻譯器,所以我不知道意思是否傳達正確..
您可以遍歷所有規則,然后將其刪除。
var security = Directory.GetAccessControl(path);
var rules = security.GetAccessRules(true, true, typeof(NTAccount));
foreach (FileSystemAccessRule rule in rules)
{
if (rule.IdentityReference.Value == accountToRemove)
security.RemoveAccessRuleSpecific(rule);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.