修正:シェル拡張によって引き起こされる右クリックとエクスプローラーの遅いクラッシュ

症状

  • ファイル/フォルダーを右クリックすると、Windowsがコンテキストメニューを表示するまでに大幅な遅延が発生する場合があります。
  • ごみ箱を空にしようとすると、代わりに別のアプリケーションが開きます。
  • 複数のファイルを選択した場合、右クリックして[開く/印刷]をクリックしても何も起こりません。 一方、単一のファイルを選択した場合に機能します。
  • エラーメッセージ「Windowsエクスプローラーで問題が発生したため終了します。 ご不便をおかけして申し訳ございません。」というフォルダを右クリックすると、
  • 右クリックは、ネットワークカードが有効になっている場合にのみ非常に遅くなります。
  • フォルダを右クリックして[プロパティ]を選択しても、何も起こりません。
  • 古いバージョンのNotepad ++をインストールすると、右クリックメニューが見苦しくなります(クラシックな外観)
  • Windowsエクスプローラまたはコントロールパネルを起動すると、データ実行防止(DEP)エラーが発生します。
  • タスクペインまたはファイルエクスプローラーのリボンで[スライドショー]または[印刷]をクリックしても何も起こりません。
  • Windows 7のバックアップと復元で[バックアップのセットアップ]または[設定の変更]をクリックしても、何も起こらないか、System32フォルダーが開きます。
  • [スタート]を右クリックしてWindows 10の[Win + X(パワーユーザー)]メニューにアクセスすると、ショートカットが機能しません。 一方、Win + Xショートカットフォルダーからは正しく機能します。
  • 右クリックコンテキストメニュー[管理者として実行]が機能しない。

原因

サードパーティプログラムによって追加された、不十分にコーディングされたコンテキストメニューハンドラーシェル拡張が、上記の症状のいずれかを引き起こしている可能性があります。 コンテキストメニューハンドラーは、右クリックメニューにコマンドを追加する一種のシェル拡張です。 たとえば、「Windows Defenderでスキャン」、「デスクトップの背景として設定」などのエントリは、右クリックメニューに表示され、Windowsにデフォルトで含まれているコンテキストメニューハンドラーです。 同様に、サードパーティのプログラムが独自の拡張機能を追加する場合があります。

$config[ads_text6] not found

コンテキストメニューハンドラーはレジストリのさまざまな領域から読み込むことができるため、エンドユーザーが問題の原因となっている拡張子を特定するのは困難な作業になる可能性があります。

シェル拡張によって引き起こされる右クリックの問題のトラブルシューティング

Nirsoftの ShellExViewは、インストールされているすべてのシェル拡張を表示および管理するための優れたツールです。 ファイルの説明、バージョン、会社情報、場所、ファイル名などが表示されます。 このツールは、不要な拡張機能を簡単に無効にするのに役立ちます。 このツールは、問題のあるシェル拡張を判別するために使用できます。

ShellExViewを効果的に使用して右クリックの問題を解決する

ShellExViewをNirsoft.netからダウンロードして実行します。 レジストリをスキャンして、すべてのシェル拡張を探します。

[オプション]メニューの[ すべてのMicrosoft拡張機能表示]をクリックして、目盛りを有効にします。 これにより、組み込みのWindowsシェル拡張を誤って無効にするのを防ぎます。

これにより、システムにインストールされているすべてのサードパーティのシェル拡張が一覧表示されます。

シェル拡張にはさまざまなタイプがあります。たとえば、アイコンハンドラー、オーバーレイハンドラー、コンテキストメニューなどです。Windowsでは右クリックの問題を扱っているため、コンテキストメニューハンドラーに特に関心があります。

Typeを使用して結果をソートし、コンテキストメニューハンドラーが一緒に表示されるようにします。

次に、コンテキストメニューハンドラーを1つずつ無効にします。 または、表示されている項目の前半を無効にします。

アイテムまたはアイテムのグループを無効にしたら、 エクスプローラー再起動 Ctrl + Eオプションを使用してシェルを再起動し、問題が解決するかどうかを確認します。 アイテムの1つまたはグループを無効にしても問題が解決しない場合は、アイテムを再度有効にし、下半分にあるMicrosoft以外のコンテキストメニューハンドラーの次のセットを無効にして、エクスプローラーを再起動します。

さらに迅速な方法は、コンテキストメニューハンドラーのリストを2つのグループに分割し、エントリの半分を一気に無効にし、再起動して動作を再度テストすることです。JClarkeという名前のWindowsユーザーは次のようにコメントしています。

「あなたはそれらを無効にすることができます...彼らは「一度に1つ」と言い、それが問題にどのような影響を与えるかを確認します。 リストを二分し、エントリの半分を一度に無効化し、再起動して右クリックを試みることで、はるかに迅速に実行しました。 これは機能したので、msconfigの場合と同じように、絞り込む必要があることはわかっていました。 それから私はそれがほんの数個になるまでリストを二分し続け、それらを一度に一つずつ行いました。 問題は、無効化の結果を正確にテストするために、再試行の間に再起動する必要があることです。 ログオフが一貫しているとは思いませんでした。」

問題が解決するまでこれを行い、最後に問題のあるコンテキストメニューハンドラーシェル拡張を識別できるようになります。

注:常にコンテキストメニューハンドラであるとは限りませんが、PropertySheetハンドラまたはアイコンハンドラが原因である場合があります。 一部の読者は、古いバージョンのWindowsを実行しているコンピューターで、プロパティシートハンドラー「IIS W3extモジュール」がフォルダープロパティの問題の原因であると報告しています。 別の特殊なケースでは、システムファイルshimgvw.dll自体が原因でした。 とにかく、これらのモジュールはWindows 10には存在しません。

Explorerシェルは、次のタイプの拡張機能をロードします。

  • 列ハンドラー
  • コンテキストメニュー
  • フックハンドラーのコピー
  • データハンドラー
  • ドラッグアンドドロップハンドラー
  • ドロップハンドラー
  • アイコンハンドラー
  • アイコンオーバーレイハンドラー
  • InfoTipハンドラー
  • プレビューハンドラ
  • プロパティハンドラー
  • プロパティシート
  • 検索ハンドラ
  • シェルフォルダー
  • ShellExecuteフック
  • サムネイルハンドラー

コンテキストメニューハンドラーは、ファイルまたはフォルダーを右クリックしたとき、またはファイルまたはフォルダーをダブルクリックしたときにも読み込まれます。 不要なコンテキストメニューハンドラーを無効にすることで、explorer.exeのクラッシュや右クリックの遅延を回避できます。

レジストリエディターを使用して手動で問題を修正する

ShellExViewまたは同様のツールを使用せずにこの問題のトラブルシューティングを行う場合は、以下にその対処方法に関する背景情報をいくつか示します。 とはいえ、これはレジストリエディタの使用に慣れている上級ユーザーのみを対象としています。

まず、問題がいつ発生するかを観察します。 特定のファイルタイプを右クリックすると? またはすべてのファイルタイプ? またはフォルダを右クリックしたときのみ?

コンテキストメニューハンドラーは、次の領域から読み込むことができます。

ロケーション説明文
HKCR \ * \ shellex \ contextmenuhandlersファイル
HKCR \ AllFileSystemObjects \ shellex \ contextmenuhandlersファイルとファイルフォルダ
HKCR \ Folder \ shellex \ contextmenuhandlersフォルダー(仮想および実)
HKCR \ Directory \ shellex \ contextmenuhandlersファイルフォルダ
HKCR \ [ProgID] \ shellex \ contextmenuhandlersファイルクラス
HKCR \ Directory \ Background \ shellex \ ContextMenuHandlersデスクトップとフォルダーの背景
HKCR \ SystemFileAssociations \ [。file_ext] \ shellex \ ContextMenuHandlersファイル
HKCR \ SystemFileAssociations \ [PerceivedType] \ shellex \ ContextMenuHandlers特定のタイプのファイル(「知覚されるタイプ」)
desktop.iniフォルダ(フォルダごとのコンテキストメニュー)

注: HKCRは、 HKEY_CLASSES_ROOTレジストリノードの短い名前です。

関連記事フォルダ、ドライブ、名前空間オブジェクトのコンテキストメニューエントリを管理する

フォルダーを処理するときに前述の症状のいずれかが発生した場合、これらの領域( AllFileSystemObjectsFolderDirectory )に読み込まれたコンテキストメニューハンドラーを検査する必要がある場合があります。 .txtファイルのみの場合は、 .txtのファイルクラス( HKCR\txtfile )にインストールされているハンドラーを調べます。 ファイル拡張子をProgIdにマップする方法をご覧ください。

ContextMenuHandlersレジストリキーの下に、1つ以上のサブキーが表示される場合があります。各キーは、コンテキストメニューハンドラーシェル拡張を表します。 キーには適切なラベルが付いているか、名前にGUIDが含まれています。

GUIDは、WebまたはHKCR\CLSID\{GUID}\InProcServer32レジストリの場所からHKCR\CLSID\{GUID}\InProcServer32して、対応するプログラムと.dllファイル名を確認できます。

レジストリエディターを開き、選択したブランチをバックアップし、コンテキストメニューハンドラーを1つずつ削除してテストします。 レジストリを変更するたびに、変更を有効にするためにエクスプローラシェルを再起動する必要あります。 これは、ShellExViewが便利な場所です。 エクスプローラーを再起動するためのCtrl + Eショートカットが含まれています。

関連記事 Windows 10 v1809のデスクトップの「新しい」コンテキストメニューが遅い

ネットワークに接続されたコンピューターでのみ右クリックを遅くしますか?

システムがネットワークに接続されている場合、シェル拡張に関係なく、右クリックメニューの表示が非常に遅くなることがあります。 また、Wi-Fiアダプターまたはイーサネット接続を無効にすると、通常の右クリック機能に戻ることがあります。 前に述べたように、これは通常、ネットワーク共有にあるプログラムを指すコンテキストメニューオプションを追加することによって引き起こされる非シェル拡張の問題です。

$config[ads_text6] not found

WinZipが共有の場所またはファイルサーバーに配置されている場合、ユーザーがネットワーク共有からWinZipを起動し、システムでWinZipシェル統合を有効にすると、レジストリエントリは次のようなネットワークの場所にあるファイルを指します。

 HKEY_CLASSES_ROOT \ WinZip \ shell \ open \ command 

(default)値に以下を割り当てます。

 \\ 192.168.0.8 \ programs \ winzip.exe "%1" 

上記の設定で、プログラムをホストしているファイルサーバーまたはネットワーク上のコンピューターがオフになっている場合、コンピューター上のファイルを右クリックすると、大幅な遅延が発生します。 そして、以下の症状のいくつかが観察できます。

  • 場合によっては、再起動後初めて初めて右クリックが遅くなることがあります。
  • また、一部のパケットがネットワーク経由で転送されていることもわかります(タスクバー通知アイコン)。
  • 一部のシステムでは、DHCPサービスを無効にすると、右クリックメニューの表示が速くなる場合もあります。

ネットワーク共有上のファイルを指すレジストリエントリをどのようにして見つけますか?

ShellMenuViewの使用

ShellMenuViewは、Nirsoftの別のツールであり、レジストリから静的コンテキストメニュー項目(非シェル拡張)をリストします。 このツールは、メニュー項目を無効/有効にするか、レジストリエディターを使用して対応するレジストリキーにジャンプするのに役立ちます。

ShellMenuViewを起動し、項目を設定します。

[ファイル名]列で並べ替えると、ネットワークに接続されたコンピューター、またはマップされたネットワークドライブ文字を指すUNCパスをすばやく特定できます。

エントリを右クリックし、[ 選択したアイテムを無効にする]をクリックして、メニューアイテムの表示を無効にします。 エントリを完全に削除するには、アイテムを右クリックして[RegEditで開く]をクリックします。

これにより、レジストリエディタの関連するブランチに移動します。 .regファイルにエクスポートしてキーをバックアップし、ブランチを削除します。

RegScannerの使用

別のオプションは、NirsoftのRegScannerユーティリティを使用することです。 RegScannerNirsoftの小さなユーティリティで、レジストリをスキャンして、指定した検索条件に一致する目的のレジストリ値を見つけ、1つのリストに表示できます。 レジストリ値を見つけたら、目的のレジストリ項目をダブルクリックするだけで、RegEditで適切な値に簡単にジャンプできます。 データフィールドが文字列\\ (UNCパス)で始まるレジストリ値を検索する必要があります

RegScannerを実行し、検索オプションを次のように構成します。

[スキャン]ボタンをクリックします。 検索結果を[データ]列で並べ替え、ネットワーク共有(UNCパスまたはマップされたドライブ文字)を含むエントリを見つけます。

これで、右クリックの遅延の原因となっているエントリがわかりました。 Regeditの特定の場所に移動し、対応するキーをバックアップしてから、問題のキーを削除します。

このガイドが、右クリックの遅い問題、エクスプローラーのクラッシュ、およびWindowsのコンテキストメニューハンドラーによって引き起こされるその他のパフォーマンスの問題の修正に役立つことを願っています。

関連記事