在目录上设置整个组的访问权限

时间:2016-06-22 22:51:59

标签: c# windows security io filesystems

我正在编写一个需要创建文件夹的C#应用​​程序,然后为DOMAIN \ Users提供完全权限。当我尝试传入Environment.UserDomainName + @"\Users"时,它会抛出System.Security.Principal.IdentityNotMappedException。目前,我有这个代码:

DirectoryInfo dirInfo = new DirectoryInfo(path);
DirectorySecurity dirSec = dirInfo.GetAccessControl();

// All users should have full control.
dirSec.AddAccessRule(new FileSystemAccessRule(Environment.UserDomainName + @"\Users", FileSystemRights.FullControl, AccessControlType.Allow));

dirInfo.SetAccessControl(dirSec);

如何让这个"工作",就像允许用户完全控制path中存储的目录一样?

这是一个完整的例外:

Exception

2 个答案:

答案 0 :(得分:4)

我在我的电脑上做了一些测试,发现在添加域用户时,这有效:

Environment.UserDomainName + @"\Users"

对于本地计算机帐户,我必须这样做:

@".\Users"

由于您在家用PC上进行测试,我假设您不在域中并且正在尝试添加本地计算机用户组。

答案 1 :(得分:1)

也可以从外面输入组名,如下所示;

public static void SetGroupUsersPermission(string Path,string groupname)
{
    DirectoryInfo dirInfo = new DirectoryInfo(Path);

    DirectorySecurity dirSec = dirInfo.GetAccessControl();

     dirSec.AddAccessRule(new FileSystemAccessRule(Environment.UserDomainName + @"\" +
     groupname, FileSystemRights.FullControl, AccessControlType.Allow));

     dirInfo.SetAccessControl(dirSec);
}