.NET System.DirectoryServices 名前空間を使用して、開発中のアクティブ ディレクトリ サーバーに新しいユーザーを作成しようとしています。
次のコードを使用してみます。
DirectoryEntry dirEntry = new DirectoryEntry(path, "TESTDOM\\Administrator", "2109password", AuthenticationTypes.Secure | AuthenticationTypes.ServerBind);
object o = dirEntry.NativeObject;
DirectoryEntry newUser = dirEntry.Children.Add("CN=NewUser4", "user");
newUser.Properties["samAccountName"].Value = "NewUser4";
newUser.Properties["Description"].Add("User Description");
newUser.Invoke("SetPassword", new object[] {"2109password"} );
newUser.CommitChanges();
私も使用してコミットしようとしました
newUser.CommitChanges();
Invoke を呼び出してパスワードを設定する前に。私は常に TargetInvocationException ラッピングを取得します。
InnerException {"The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)"} System.Exception {System.Runtime.InteropServices.COMException}
例外は常に呼び出したときにのみスローされます
newUser.Invoke("SetPassword", new object[] {"2109password"} );
SetPassword で Invoke を呼び出す前に newUser.CommitChanges() を呼び出すと、新しいユーザーがドメインに作成されます。その後、手動で AD マシンに移動し、同じパスワードを問題なく設定できます (したがって、パスワード文字列が規則に違反していても問題ありません)。これについてオンラインで多くの投稿があることに気付きましたが、解決策が見つかりませんでした。
コードを実行しているマシンがドメインのメンバーではないという事実と関係があるのではないかと思います。ユーザー TESTDOM\Administrator は、TESTDOM ドメインの管理者、ドメイン管理者、スキーマ管理者、およびエンタープライズ管理者グループのメンバーですが。
.NET 2 を使用しているため、System.DirectoryServices.AccountManagement 名前空間を使用できないことに注意してください。これを解決するために何ができるかについてのアイデアはありますか? 私は必死です