2

Active Directory 構造、ユーザー、グループの作成、ユーザーの別のグループへの割り当てなど、ドメインでユーザーを分離するための多くの操作を実行するために使用されるアプリケーションがあります。

AD ですべてが作成されたら、新しく作成した AD グループの 1 つに、新しく作成したフォルダーへのアクセスを割り当てたいと考えています。

ドメイン内のマシンにログオンしてそこからアプリケーションを実行するのではなく、別のドメインのローカル マシンからアプリケーションを実行したいと考えています。

私のアプリケーションのすべては、アクセス ルールの設定を除いて、ローカル マシンから正常に動作しているようです。これは失敗します:

「一部またはすべての ID 参照を翻訳できませんでした」。

ドメイン内から実行すると、コードは正常に機能します。偽装も試しましたが、違いはありません

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

2 に答える 2

0

これは通常、許可されたグループが存在しないか、ターゲット マシンで解決できなかったことを意味します。その名前のグループがターゲット ドメインに存在するかどうか、またはドメイン間に適切な信頼関係が存在するかどうかを確認します。

于 2012-09-11T13:17:26.347 に答える
0

akton が言ったように、AD 間の信頼関係を確認してください。

Moreover, check your running environment. I had this kind of issues when I had to touch at AD through C#: if the user doesn't have permissions to do this kind of modifications on the other AD, it will fail.

And last point, the group name and path. Does your group name contains the domain name (sSecurityGroup) ? Maybe your directory path has a path issue (sDirectory) ?

于 2012-09-11T13:29:24.367 に答える