我正试图在Windows 7机器上以编程方式为Everyone设置FullControl而没有运气。
var dirSec = dir.GetAccessControl();
var fsar = new FileSystemAccessRule(
"Everyone",
FileSystemRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow);
dirSec.AddAccessRule(fsar);
dir.SetAccessControl(dirSec);
这为Everyone组添加了一些权限(列表和读取),但不是完全控制权限。如果我使用资源管理器编辑安全权限,我可以将其设置为FullControl。任何想法为什么失败?我的尝试没有错误消息。
答案 0 :(得分:1)
这应该可以正常工作:
string path = @"C:\test";
DirectorySecurity ds = Directory.GetAccessControl(path);
ds.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
Directory.SetAccessControl(path, ds);
如果这不起作用,那么您的应用程序似乎无权提供该类访问规则。尝试实施模拟。以下是一个示例:WindowsIdentity Impersonation using C# Code
答案 1 :(得分:0)
foreach (FileSystemRights permission in Enum.GetValues(typeof(FileSystemRights)))
{
myDirectorySecurity.AddAccessRule(
new FileSystemAccessRule(user,
permission,
InheritanceFlags.ContainerInherit |
InheritanceFlags.ObjectInherit |
InheritanceFlags.None,
PropagationFlags.None,
AccessControlType.Allow));
}