シェルを使用したデバッグ
このトピックでは、シェルと名前空間拡張 DLL をデバッグする方法について説明します。
デバッガーでのシェルの実行
拡張機能をデバッグするには、デバッガーからシェルを実行する必要があります。 次の手順のようにします。
拡張機能のプロジェクトをデバッガーに読み込みますが、実行しないでください。
シェルをシャットダウンします。
- Windows Vista 以降の場合:
- [スタート] メニューを表示します。
- Ctrl キーを押しながら Shift キーを押し、[ スタート ] メニューの右半分の背景を右クリックします。
- 表示されたメニューから、[終了] エクスプローラーを選択します。
- Windows XP の場合:
- [スタート] メニューの [シャットダウン] を選択します。
- Ctrl キーを押しながら Alt キーを押しながら Shift キーを押し、[Windows のシャットダウン] ダイアログ ボックスで [いいえ] をクリックします。
シェルはシャットダウンされましたが、デバッガーを含め、他のすべてのアプリケーションは引き続き実行されています。
- Windows Vista 以降の場合:
Windows ディレクトリから Explorer.exe を使用して拡張 DLL を実行するようにデバッガーを設定します。
デバッガーからプロジェクトを実行します。 シェルは通常どおりに起動しますが、デバッガーはシェルのプロセスにアタッチされます。
シェル拡張機能の実行とテスト
デスクトップとタスク バーの停止と再起動を回避するために、別の Windows エクスプローラー プロセスで拡張機能を実行してテストできます。 拡張機能の実行とテスト中は、デスクトップとタスク バーを引き続き使用できます。
この機能を有効にするには、次のREG_DWORDエントリをレジストリに追加します。
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
DesktopProcess = 1
このエントリを有効にするには、ログオフして再度ログオンする必要があります。 この設定により、1 つのExplorer.exeプロセスでデスクトップウィンドウとタスクバーウィンドウが作成され、他のすべてのエクスプローラーウィンドウとフォルダーウィンドウが別のExplorer.exeプロセスで開かれます。
拡張機能の実行とテストの利便性を高めるだけでなく、この設定により、シェル拡張機能に関連するデスクトップの堅牢性も高まります。 このような拡張機能の多く (ショートカット メニュー拡張機能など) は、非デスクトップ Explorer.exe プロセスに読み込まれます。 このプロセスが終了すると、デスクトップとタスク バーは影響を受けず、次のエクスプローラーまたはフォルダー ウィンドウで終了したプロセスが再作成されます。
DLL のアンロード
シェルは、使用カウントが 0 の場合に DLL を自動的にアンロードしますが、DLL が一定期間使用されていない場合にのみアンロードされます。 この非アクティブな期間は、特にシェル拡張 DLL がデバッグされている場合に許容できない長い場合があります。 次の情報をレジストリに追加することで、非アクティブ期間を短縮できます。
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
AlwaysUnloadDll