2
作爲Vista SP1上的提升管理員運行,我的C#應用程序嘗試使用以下代碼設置以下規則。沒有產生錯誤,但是目錄的ACL沒有任何改變。我錯過了什麼?爲什麼我不能在C#中設置這個ACL規則?
public static void Main(string args[])
{
string dirPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Company"), "Product");
Directory.Create(dirPath);
_SetAcl(dirPath, "Users", FileSystemRights.FullControl);
}
private static void _SetAcl(string path, string identity, FileSystemRights rights)
{
var info = new DirectoryInfo(path);
var acl = info.GetAccessControl();
var rule1 = new FileSystemAccessRule(identity, rights, AccessControlType.Allow);
bool modified;
acl.ModifyAccessRule(AccessControlModification.Reset, rule1, out modified);
var inheritanceFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
var rule2 = new FileSystemAccessRule(identity, rights, inheritanceFlags,
PropagationFlags.InheritOnly, AccessControlType.Allow);
acl.ModifyAccessRule(AccessControlModification.Add, rule2, out modified);
}
更新:只需添加以下代碼作爲_SetAcl方法的最後一行,我的代碼是好去。
info.SetAccessControl(acl);
D'oh!它纔會生效。那樣做了。謝謝。 – flipdoubt 2009-02-03 14:33:37