Active Directory拡張機能のデバッグ
このトピックに記載されているMicrosoft Active Directoryディレクトリサービスのプロパティシート、コンテキストメニュー、およびオブジェクト作成ウィザードの拡張機能は、COMインプロセスサーバーとして実装されます。 つまり、各拡張機能は、ホストプロセスのコンテキストで実行されるDLLです。 拡張機能をデバッグするには、拡張機能をアプリケーションに関連付け、デバッガーでアプリケーションを実行する必要があります。
Windowsシェルに表示されるActive Directory拡張機能のデバッグ
Windowsシェルに表示されるActive Directory拡張機能は、Explorer.exeプロセスのコンテキストで読み込まれます。 これらの拡張機能は、標準のシェル拡張機能のようにデバッグできます。 シェル拡張機能のデバッグの詳細については、 「シェルを使用したデバッグ」 を参照してください。
Active Directory MMCスナップインに表示されるActive Directory拡張機能のデバッグ
Active Directory管理MMCスナップインに表示されるActive Directory拡張機能は、Microsoft管理コンソールのコンテキストに読み込まれます。 拡張機能をデバッグするには、ローカルシステムでMmc.exeを検索し、デバッグ用のアプリケーションとして使用するようにデバッガーを設定します。 ほとんどのシステムでは、Mmc.exeはWindowsシステムディレクトリ (C:\WINNT\System32など) にあります。 デバッガーによっては、デバッガーによっても読み込まれるように拡張DLLを設定する必要がある場合とない場合があります。 多くのデバッガーでは、実行中のMMCプロセスにデバッガーをアタッチすることもできます。 詳細については、デバッガーのユーザーガイドを参照してください。
MMCで特定のスナップインを自動的に読み込むと便利です。 これを行うには、アプリケーションの引数にMSCファイルのパスとファイル名を設定します。 これは、システムによってインストールされたMSCファイルでも、ユーザーが作成したファイルでもかまいません。 MSCファイルを作成するには、次の手順に従います。
- Mmc.exeを実行します。
- MMCメニューで [ファイル] - [スナップインの追加と削除...] を選択し、目的のスナップインを選択して、目的のスナップインを読み込みます。
- MMCメニューで [ファイル] - [名前を付けて保存...] を選択して、MSCファイルを保存します。
スタートアップMSCファイルを設定しない場合は、デバッガーでアプリケーションを実行するときに、目的のスナップインを手動で読み込む必要があります。
デバッガーでホストアプリケーションを実行すると、実行中のアプリケーションにデバッグシンボルが含まれていないことを示す警告メッセージがデバッガーに表示される場合があります。 これは予想されることであり、実際にはホストアプリケーションではなくDLLをデバッグしているため、無視しても問題ありません。
ほとんどの場合、拡張機能は、拡張機能が読み込まれて初期化される何らかのアクションをユーザーが実行するまで呼び出されません。 たとえば、ユーザーオブジェクトに対して表示されるコンテキストメニューの拡張機能をデバッグしている場合、ユーザーオブジェクトのコンテキストメニューが初めて表示されるまで、拡張機能は読み込まれません。
ブレークポイントを設定し、デバッグ出力を表示できるようになりました。 拡張機能が読み込まれない場合は、拡張機能のDllGetClassObject関数にブレークポイントを設定します。 DllGetClassObjectが呼び出されない場合は、拡張機能が正しく登録されていない可能性があります。
デバッグが完了したら、MMCを終了し、デバッガーを正常にアンロードします。