2016-06-22 31 views
1

我正在编写一个需要创建文件夹的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

+1

代码看起来不错。无论出于何种原因,它都找不到用户名。我在我的机器上使用了您的代码,并按预期工作了100%。也许仔细检查一下您的域\用户组是否存在?也许你正在测试的机器没有加入到域中? –

+0

@DavidGreilach是的,它当然存在:http://i.imgur.com/7Wb84VE.png。 - 我也检查了什么'Environment.UserDomainName + @“\ Users”'返回,这一切都如预期。 – carefulnow1

+0

目前,我只是在我的本地机器上测试它,但我打算在家用计算机上的开发完成后在网络上使用它。 – carefulnow1

回答

3

我做我的电脑上的一些检测,发现添加域用户,当这个工作:

Environment.UserDomainName + @"\Users" 

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

@".\Users" 

由于您正在测试你的家用电脑我假设你不在一个域上,并试图添加本地计算机用户组。

+0

所以我需要根据系统类型(网络或本地)做两个不同的版本? – carefulnow1

+0

如果是这样,我猜它会在try和catch语句中工作。 – carefulnow1

+0

你可以做一个尝试捕捉或者只是测试它的域名是否首先在本地执行,如果它不是的话 –