問題タブ [directoryservices]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Active DirectoryがC#ですべてのユーザーを見つけられない
ActiveDirectoryにクエリを実行してユーザーの存在を確認するコードがいくつかあります。私は約1300のIDの長いリストを検証しようとしています。ユーザーアカウント(LINQ to AD、DirectorySearcher(親DirectoryEntryありとなし)、およびWinNT://パスにリンクするDirectoryEntry)かどうかを確認するために、いくつかの方法を試しました。毎回戻ってきて、複数のユーザーが存在しないと言います。ユーザーIDをコードにハードコーディングして個別に実行すると、存在が検証されます。foreachループで実行しようとすると、いくつかのフォールスネガティブが発生します。
これが私が今使っているコードです。
フォールスネガティブが発生する提案や理由はありますか?
c# - System.DirectoryServices は遅いですか?
以下のコードを使用して、ユーザーが Web サイトにログオンしたときに Active Directory の情報を検索しています。ローカル ドメインに対して実行すると非常に高速ですが、VPN 経由でリモートの信頼できるドメインに対して実行すると、非常に遅くなります (約 7 ~ 8 秒かかります)。同じボックスからリモート ドメインに対して dsa.msc を実行すると、ローカルで実行するのとほぼ同じ速さで実行できます。
可能な限り最小限のデータを取得するためにプロパティ フィルタリングを使用しているため、このシナリオで System.DirectoryServices について本質的に遅いものがありますか、またはパフォーマンスを向上させる方法について何かヒントはありますか?
VPN 経由のネットワーク接続は問題ありません。実行速度が遅いのはこのコードだけです。
memory-leaks - System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity の奇妙な問題
私たちは、ユーザーがイントラネット上の Web アプリケーションを介してアカウントのパスワードを変更できるようにするシステムを作成しています。
最初は、すべてが順調に進んでいるように見えました。開発中、テスト アカウントのパスワードは問題なく変更できました。
しかし、システムを稼働させたとき、問題が発生し始めました。症状は次のとおりです。
- 最初は、すべて問題ありません。ユーザーはパスワードを変更できます。
- ある時点で、UserPrincipal.FindByIdentity で次のエラーが発生します:「System.Runtime.InteropServices.COMException: 認証メカニズムが不明です。」
- それ以降、Web アプリケーションを介してパスワードを変更しようとすると、「System.Runtime.InteropServices.COMException: サーバーが動作していません。」というエラーが発生します。
- アプリ プールを手動でリサイクルすると、さらにエラーが発生し始めるまで、すべてが自動的に修正されるように見えます。つまり、プロセスはフェーズ 1 から最初からやり直されます。
関連するコードのスニペットは次のとおりです。
なぜこれが起こっているのかについての手がかりはありますか?Google 検索は本当に役立つものを見つけられず、MSDN のドキュメントもそうではありません。
c# - DirectoryServices.AccountManagement を使用して OU からグループを取得する
AccountManagement を使用して、組織単位内のすべてのグループを一覧表示したいと考えています。
次のスニペットは DirectoryServices で動作しますが、結果の DirectoryEntry パスを使用して GroupPrincipal をインスタンス化する必要があります (これは汚い修正のように感じます)。
誰かアイデアはありますか?
ありがとう!
c# - サブ結果を含む LDAP クエリ
私はこれでかなり長い間頭を悩ませてきましたが、うまくいきません。AD ユーザーとコンピューターで作業している LDAP クエリがありますが、C# でプログラム的に実行する方法がわかりません。
AD ツールで正常に動作する LDAP クエリを次に示します: (memberOf=CN=AccRght,OU=Groups,OU=P,OU=Server,DC=mydomain,DC=com)(objectCategory=user)(objectClass=user) (l=都市)
このコードを使用してユーザー アカウントを取得し、CN=AccRght のメンバーを取得しましたが、特定の都市に属するユーザーを制限することに成功していません。
助けてくれてありがとう!
c# - System.DirectoryServicesを介したターミナルユーザーの管理
ユーザーがターミナルサーバーにログインしたときに起動されるプログラムのパラメーターを頻繁に変更する必要がある環境があります。現在のところ、コンピューター管理スナップインを開き、ユーザーの[環境]タブを編集し、[ログオン時に次のプログラムを開始する]でパラメーターを手動で変更します。プロセスを自動化したいと思います。
私はSystem.DirectoryServicesとSystem.DirectoryServices.AccountManagementを調べて、それについてできる限りのことを読んでいます。これまでのところ、編集する必要のある情報は「パラメータ」プロパティに保存されていると思います(プロパティの最悪の名前、グーグルを台無しにする)。その推測の理由は、私が取得したすべてのプロパティをリストするときです
CtxInitialProgramとCtxWorkDirectoryは、私が作業しているものに関連しているようです。
値を正しく読み書きする方法を理解できない、または私を助けるためのリソースを見つけることができないため、今は行き詰まっています。
どんな助けでも大歓迎です。
編集-私はインターネット上の他の場所でこの答えを見つけましたインターネット上の他の場所に尋ねると私は答えを見つけました:
残念ながら、このデータは独自の形式でエンコードされています。プログラムで管理する唯一のサポートされている方法は、ターミナルサービスに付属しているIADsTSUserExADSIインターフェイスを使用することです。基本的には、NativeObjectプロパティをこのCOMインターフェイスにキャストし(必要なCOM参照を作成した後)、インターフェイスによって公開されているプロパティにアクセスします。
今私の質問は、そのCOM参照をどのように設定するかです。これまでにそのようなことをしたことはありません。
c# - ユーザー アカウントが有効か無効かを確認する方法
反復的な事務作業を解決するために、簡単な C# win フォーム アプリをまとめています。
AD ですべてのユーザー アカウントの検索を実行し、それらをチェック ボックス付きのリスト ビューに追加しています。
アカウントの有効/無効の状態に応じて、listviewitems のデフォルトのチェック状態をデフォルトに設定したいと思います。
DirectoryEntry オブジェクトからアカウントの状態を取得するために解析する適切な属性を見つけるのに苦労しています。AD User attributesを検索しましたが、有用なものは見つかりませんでした。
誰でもポインタを提供できますか?
c# - AD検索に迅速に対応できない
特定の Windows Server 2003 Active Directory 組織単位のユーザーを必要とする SharePoint アプリケーションを開発しています。
まず、DirectoryServices オブジェクトの「Dispose」および「Close」操作については気にしませんでした。この時点で、取得操作は迅速かつ成功しました。
しかし、これにより、2 回試行した後に「サーバーが動作していません」というエラーが発生していました。そして、このエラーは、他の AD 操作を停止するなど、アプリケーション全体の動作を悪化させます。
次に、すべての DirectoryEntry、DirectorySearcher、および SearchResultCollection オブジェクトに using ステートメントを追加して、このエラーを修正しました。
その後、「サーバーが動作していません」というエラーが表示されなくなったところまで来ました。しかし、DirectorySearcher.FindAll メソッドを使用して AD からユーザーを 1 回以上取得しようとすると、最初の 1 つはすばやく正常に動作し、他のユーザーはよりゆっくりではあるが正常に動作します。ちょっとタイムアウトの時間がかかります。この速度低下について、私の状況を教えてください。
サンプルコードは次のとおりです。
前もって感謝します
c# - C# を使用した Active Directory に対する認証
ユーザー名だけで、パスワードはありません。このユーザー名がActive Directoryに存在するかどうかを確認したいだけです。どうすればいいですか?
.net - System.DirectoryServices.AccountManagement.GroupPrincipal はスレッドセーフですか?
ユーザーを一括で作成するプログラムを作成しています。作成の一部である操作が約 5 秒間ブロックされています。これを回避するために、それをスレッド化し、すべてをスレッド プールに配置しました。
私の質問は、スレッドの外側で原則を作成し、グループの原則をスレッドに渡して呼び出すgroup.Members.Add(u)
とgroup.Save()
、問題が発生する可能性があるかどうかです。各スレッド内から新しいグループ プリンシパルを生成した方がよいでしょうか?