C# 跨域设置文件夹权限

C# 跨域设置文件夹权限,c#,.net,permissions,cross-domain,C#,.net,Permissions,Cross Domain,我有一个应用程序,用于执行许多操作来隔离域上的用户,例如创建Active Directory结构、用户和组,以及将用户分配到不同的组 在广告中创建所有内容后,我想为我新创建的广告组之一分配对新创建文件夹的访问权限 我希望从另一个域上的本地计算机运行应用程序,而不是必须登录到域中的计算机,然后从那里运行应用程序 除了设置访问规则之外,我的应用程序中的所有内容似乎都可以在本地机器上正常工作;它失败于: “无法翻译某些或所有身份引用” 代码在域内运行时工作正常。我也尝试过使用模拟,但这没有什么区别 i

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

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

我希望从另一个域上的本地计算机运行应用程序,而不是必须登录到域中的计算机,然后从那里运行应用程序

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

“无法翻译某些或所有身份引用”

代码在域内运行时工作正常。我也尝试过使用模拟,但这没有什么区别

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);
      }

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

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

如akton所说,检查您的广告之间的信任关系

此外,检查您的运行环境。当我不得不通过C#触摸广告时,我遇到了这样的问题:如果用户没有权限在另一个广告上进行这种修改,它将失败


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

就像akton说的,检查你的广告之间的信任关系

此外,检查您的运行环境。当我不得不通过C#触摸广告时,我遇到了这样的问题:如果用户没有权限在另一个广告上进行这种修改,它将失败


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

当我尝试使用模拟时,我会认为用户肯定有权限,因为我正在模拟我使用的用户,将其RDP到域B中的计算机中,并从那里运行应用程序-这不会出错。我没有把域名放在组名中,所以我会试试。当我单步执行代码时,目录路径似乎正常,但我将尝试使用完全限定的目录路径。谢谢你有这种方法的运气吗?我在这里遇到了同样的问题,无法在具有c#的外域中创建文件夹(尽管存在模拟),因为我尝试使用模拟,所以我会认为用户肯定有权限,因为我正在模拟我使用的用户,将其RDP到域B中的一台机器中并从那里运行应用程序-这不会出错。我没有把域名放在组名中,所以我会试试。当我单步执行代码时,目录路径似乎正常,但我将尝试使用完全限定的目录路径。谢谢你有这种方法的运气吗?我在这里遇到了同样的问题,无法在具有c#的外部域中创建文件夹(尽管有模拟),但是,如前所述,代码在域内的计算机上运行时会成功运行,因此我认为这不可能是您第一次建议组不存在,否则也会失败?该组肯定存在,因为它是在代码的早期创建的,甚至是在测试期间的一周的早期创建的!但这可能是一个解决问题。。。所有其他操作都可以工作,比如创建AD对象和目录本身,所以我认为信任是好的。失败的只是权限Hanks,但是,如前所述,代码在域内的计算机上运行时成功运行,因此我认为这不可能是您第一次建议组不存在,否则也会失败?该组肯定存在,因为它是在代码的早期创建的,甚至是在测试期间的一周的早期创建的!但这可能是一个解决问题。。。所有其他操作都可以工作,比如创建AD对象和目录本身,所以我认为信任是好的。只有权限失败