簡體   English   中英

如何在不進行硬編碼的情況下刪除文件夾的所有拒絕權限?

[英]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);
}

問題是,如果您擁有SystemUserEveryoneAdministrator以外的帳戶,則該權限可能會保留。 有沒有辦法釋放所有賬號的權限?

我正在使用翻譯器,所以我不知道意思是否傳達正確..

您可以遍歷所有規則,然后將其刪除。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM