次の方法で共有


シェルを使用したデバッグ

このトピックでは、シェルと名前空間拡張 DLL をデバッグする方法について説明します。

デバッガーでのシェルの実行

拡張機能をデバッグするには、デバッガーからシェルを実行する必要があります。 次の手順のようにします。

  1. 拡張機能のプロジェクトをデバッガーに読み込みますが、実行しないでください。

  2. シェルをシャットダウンします。

    • Windows Vista 以降の場合:
      1. [スタート] メニューを表示します。
      2. Ctrl キーを押しながら Shift キーを押し、[ スタート ] メニューの右半分の背景を右クリックします。
      3. 表示されたメニューから、[終了] エクスプローラーを選択します。
    • Windows XP の場合:
      1. [スタート] メニューの [シャットダウン] を選択します。
      2. Ctrl キーを押しながら Alt キーを押しながら Shift キーを押し、[Windows のシャットダウン] ダイアログ ボックスで [いいえ] をクリックします。

    シェルはシャットダウンされましたが、デバッガーを含め、他のすべてのアプリケーションは引き続き実行されています。

  3. Windows ディレクトリから Explorer.exe を使用して拡張 DLL を実行するようにデバッガーを設定します。

  4. デバッガーからプロジェクトを実行します。 シェルは通常どおりに起動しますが、デバッガーはシェルのプロセスにアタッチされます。

シェル拡張機能の実行とテスト

デスクトップとタスク バーの停止と再起動を回避するために、別の 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