跨域设置文件夹权限

时间:2012-09-11 12:35:02

标签: c# .net permissions cross-domain

我有一个应用程序,用于执行一些操作来隔离域上的用户,例如创建Active Directory结构,用户和组以及将用户分配到不同的组。

在AD中创建所有内容后,我想为新创建的AD组之一分配对新创建的文件夹的访问权限。

我想从不同域上的本地计算机运行该应用程序,而不是必须登录域中的计算机,然后从那里运行该应用程序。

除了设置访问规则之外,我的应用程序中的所有内容似乎都可以在本地计算机上正常工作;失败了:

“部分或全部身份参考无法翻译”。

从域内运行时,代码运行正常。我也试过使用模仿,但这没什么区别

if (Directory.Exists(sDirectory))
    {
      using (Impersonation impUser = new Impersonation(sAdminUserName, _sDomain, sAdminPassword))
      {
        DirectoryInfo diClientDirectory = new DirectoryInfo(sDirectory);
        DirectorySecurity dsClientDirectory = diClientDirectory.GetAccessControl();
        FileSystemAccessRule fsAccessRules = new FileSystemAccessRule(sSecurityGroup, FileSystemRights.FullControl, (InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit), PropagationFlags.InheritOnly, AccessControlType.Allow);

        **dsClientDirectory.AddAccessRule(fsAccessRules);  //THIS LINE THROWS THE EXCEPTION**
        diClientDirectory.SetAccessControl(dsClientDirectory);
      }

2 个答案:

答案 0 :(得分:0)

这通常意味着授予权限的组在目标计算机上不存在或无法解析。检查目标域中是否存在具有该名称的组,或者域之间是否存在合适的信任关系。

答案 1 :(得分:0)

像akton所说,检查你的AD之间的信任关系。

此外,检查您的运行环境。当我不得不通过C#触摸AD时,我遇到了这类问题:如果用户没有权限在其他AD上进行此类修改,则会失败。

最后一点,组名和路径。您的组名是否包含域名(sSecurityGroup)?也许您的目录路径有路径问题(sDirectory)?