我想將文件夾的安全設置應用於C#中的所有後代。從本質上講,我想做'在[文件夾]的高級安全設置'中用'替換來自此對象的可繼承權限的所有後代的所有現有可繼承權限'。遞歸安全設置
有沒有什麼優雅的方法來解決這個問題?
我想將文件夾的安全設置應用於C#中的所有後代。從本質上講,我想做'在[文件夾]的高級安全設置'中用'替換來自此對象的可繼承權限的所有後代的所有現有可繼承權限'。遞歸安全設置
有沒有什麼優雅的方法來解決這個問題?
經過一些時間與谷歌和MSDN,我想出了下面的代碼位內的一些其他有價值的工具。似乎工作得很好。
static void Main(string[] args)
{
DirectoryInfo dInfo = new DirectoryInfo(@"C:\Test\Folder");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
ReplaceAllDescendantPermissionsFromObject(dInfo, dSecurity);
}
static void ReplaceAllDescendantPermissionsFromObject(
DirectoryInfo dInfo, DirectorySecurity dSecurity)
{
// Copy the DirectorySecurity to the current directory
dInfo.SetAccessControl(dSecurity);
foreach (FileInfo fi in dInfo.GetFiles())
{
// Get the file's FileSecurity
var ac = fi.GetAccessControl();
// inherit from the directory
ac.SetAccessRuleProtection(false, false);
// apply change
fi.SetAccessControl(ac);
}
// Recurse into Directories
dInfo.GetDirectories().ToList()
.ForEach(d => ReplaceAllDescendantPermissionsFromObject(d, dSecurity));
}
您可能會發現DirectorySecurity類對此很有用。
http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx
有可能是System.Security.AccessControl 命名空間
謝謝hamlin11。我一直在試圖用這個解決方案。不過,現在感覺有點「黑客」。我會發布我想出來的 – ccook 2009-08-17 21:34:06
謝謝,沒有任何問題。你讓我走在正確的道路上 – ccook 2009-08-20 14:18:28