2010-02-18 18 views
1

,我們已經發現,其新的父文件夾moved file does not inherit permissions替代SetNamedSecurityInfo強制文件刷新我有一個問題,我們在臨時創建一個文件,然後移動到我們的應用程序目錄的可繼承權限

我知道我可以使用File.Copy(如創建一個新的文件將繼承的權限),但是性能方面的原因,我們不希望這樣做。

以上引用該網站建議使用SetNamedSecurityInfo,我可以訪問使用PInvoke approach。但是我認爲可能有一些方法可以通過使用核心.NET API來實現,比如新的FileInfo(「C:\ Test.txt」)。GetAccessControl()就像上面的文章已經有四年了。

有沒有更好的方式來'刷新'文件的權限來匹配它的父文件夾?

回答

1

經過一番測試,這是我跟去的代碼:

FileInfo fi = new FileInfo(myTargetFile); 
var acl = fi.GetAccessControl(); 
var rules = acl.GetAccessRules(true, true, typeof(SecurityIdentifier)); 

//Remove all existing permissions on the file 
foreach (var rule in rules.Cast<FileSystemAccessRule>()) 
{ 
    acl.RemoveAccessRule(rule); 
} 

//Allow inherited permissions on the file 
acl.SetAccessRuleProtection(false, false); 
fi.SetAccessControl(acl); 
相關問題