所以我试图修改BUILTIN \ Users组的权限,至少有修改文件系统访问权限。不幸的是,我尝试使用下面的代码生成未更改的ACL。无法修改CommonAppDataPath目录中的C#中的ACL权限
SecurityIdentifier usersSecurityIdentifier = ntAccount.Translate(typeof(SecurityIdentifier)) as SecurityIdentifier;
DirectorySecurity directorySecurity = Directory.GetAccessControl(source.FullName);
FileSystemAccessRule accessRule
= new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, AccessControlType.Allow);
directorySecurity.ModifyAccessRule(AccessControlModification.Add,
accessRule,
out modified);
Console.WriteLine(modified);
修改后的报告在所有情况下均为true,但在您查看文件夹属性时不会更新这些修订。
我也尝试添加访问规则对于没有尚未使用类似的代码目录中的ACL只是AddAccessRule,而不是修改的SecurityIdentifier。即使新的SecurityIdentifier显示在目录的perms列表中,但它们没有我指定的访问权限。
我试图修改在Environment.SpecialFolders.CommonApplicationData专有目录管理员帐户的所有者访问。我也在尝试以管理员身份修改ACL。
没有人有任何的想法有什么错瓦特/上面的代码或有可能导致我使用本地原生.NET类设置ACL的正确方法的任何资源?
我有一位朋友在另一台Vista机器上确认了这种行为。它似乎与我正在修改CommonAppData路径中的数据有关。 – 2009-09-18 03:55:15
所以我发现这个相关的线程,并认为我会发布[这里] [1]。要点是,目录权限应该在创建目录时由管理帐户执行的安装期间设置。我认为这可以通过自定义操作和安装程序类来完成。当我编写代码并确认这其实是真的时,我会在这里发布我的解决方案。 [1]:http://www.vistax64.com/vista-security/165672-how-programmatically-modify-users-full-control。html – 2009-09-18 04:07:07