質問

userprincipal(元本)の名前フィールド(CNに対応)を更新しようとすると、userprincipal.save()への呼び出しで「サーバーはリクエストを処理したくない」エラーが発生します。

同じ名前(CN)を持つ同じOUに別のオブジェクトがないことを確認するようにチェックしました。

私が操作しているプリンシパルコンテキストはドメインルートです(ユーザーアカウントが存在するOUレベルではありません)。

このエラーにはどのような理由がありますか?セキュリティポリシーに関連する可能性のあるものですか(他のすべてのフィールドを更新することができますが)?

using (var context = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["domain"], ConfigurationManager.AppSettings["rootDN"], ContextOptions.Negotiate, ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"])) {
    var user = UserPrincipal.FindByIdentity(context, IdentityType.Sid, "..."); // SID abbreviated

    user.Name = "Name, Test";

    user.Save();
}

私が使用しているユーザーには、プリンシパルContextを作成しているユーザーには、広告オブジェクトを変更するセキュリティ権があります。他のフィールド(姓など)を他のフィールドを更新すると、すべてが正常に機能します。

編集:

私は(ADSIを使用して)必要なことを達成することができましたが、なりすましの下で次のコードを実行する必要があります。なりすましコードは醜く、以下のコードは広告データ(DirectoryServices.AccountManagementを使用して)を更新する逆の方法から離れているため、より良いソリューションを取得したいと思います。

using (var companyOU = new DirectoryEntry("LDAP://" + company.UserAccountOU)) {
    companyOU.Invoke("MoveHere", "LDAP://" + user.DistinguishedName, "cn=Name\, Test");
}

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top