ここ数ヶ月で添付の様なダイアログが複数のWindows7マシンにて不定期に複数回出現するようになりました。
それらで共通する主なインストールソフトとしては、Google Chrome、Everything、Deep Burner、Input Director、UltraVNC、Poderosa、VMware Player、NOD32などですが、数が多いので正攻法では特定するのは困難な気がしています。
どうもexeファイルへの関連付け設定が間違っている(解除されている)場合によく発生しているようですが、当方では普通にexeファイルは実行可能な状態です。
また、何も操作していなくても上記ダイアログが表示されることがあり、おそらく拡張子の関連付けが未登録のファイルをバックグラウンドでShellExecute等のWindows APIにて起動させようとしているプロセスが何処かに存在するのだと思いますが、呼び出し元プロセスを知る方法が思いつかないため、何がトリガとなって起こっているのか原因が掴めません。
タスクスケジューラ等にはそれらしきスケジュールは存在せず、また、イベントビューアのログにも何も残っていないのですが、こういうケースではどのようにして原因となるプロセスを特定すればよいでしょうか?
今回の問題の原因の1つとして、ウイルス対策ソフトによって、ファイルの関連付けが解除されるケースがあるようです。
■ 【ウイルスセキュリティ】ファイルの関連付けが解除され、プログラムが起動できなくなる
http://sourcenext.force.com/faq50search/faq?id=VS-00687
お使いのウイルス対策ソフトは上記のものとは異なるようですので、まったく同じ事象という訳ではないと思いますが、
恐らくは、以下のキー配下が更新されているのではないかと思います。
キー:HKEY_CLASSES_ROOT\exefile\shell
以下のサイトにて、EXE ファイルの関連付けを戻す為のレジストリファイルが配布されていましたので、レジストリを比較したら、該当項目を特定できそうな気がします。
■ Fix Explorer.exe Error "This file does not have a program associated with it" in Windows 7 - The Winhelponline Blog
http://www.winhelponline.com/blog/fix-file-association-error-explorer-in-windows-7/
■ File Association Fixes for Windows 7 - The Winhelponline Blog
http://www.winhelponline.com/blog/file-asso-fixes-for-windows-7/
http://www.winhelponline.com/fileasso/exe_fix_w7.zip
なお、更新対象のリソース(レジストリキー)が判明しており、再現性のある事象ということであれば、以下のツールを用いることで、
どのプロセスがリソースを更新しているのかを調査することが可能です。
■ Process Monitor
http://technet.microsoft.com/ja-jp/sysinternals/bb896645
再現性が無いということですと、調査はかなり厳しいかと思いますが、レジストリ・キーの最終更新日時を調べることで、何かヒントが見つかるかも知れません。
■ レジストリ・キーの最終更新日時を調べる- @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/1109regupdate/regupdate.html
また、エラーメッセージを表示しているプロセスを特定するのであれば、
■ Process Explorer
http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx
が使えるかと思います。
ツールバーにある「Find Window's Process」というアイコンをエラーメッセージのダイアログまでドラッグ&ドロップすると、リスト上の該当プロセスにフォーカスが当たります。
そのプロセスを右クリックし「プロパティ」を表示することで、呼び出している親プロセス名を確認することが可能です。
(ただし、親プロセスが消滅している場合は、プロセス名は表示されません。)
今回の問題の原因の1つとして、ウイルス対策ソフトによって、ファイルの関連付けが解除されるケースがあるようです。
■ 【ウイルスセキュリティ】ファイルの関連付けが解除され、プログラムが起動できなくなる
http://sourcenext.force.com/faq50search/faq?id=VS-00687
お使いのウイルス対策ソフトは上記のものとは異なるようですので、まったく同じ事象という訳ではないと思いますが、
恐らくは、以下のキー配下が更新されているのではないかと思います。
キー:HKEY_CLASSES_ROOT\exefile\shell
以下のサイトにて、EXE ファイルの関連付けを戻す為のレジストリファイルが配布されていましたので、レジストリを比較したら、該当項目を特定できそうな気がします。
■ Fix Explorer.exe Error "This file does not have a program associated with it" in Windows 7 - The Winhelponline Blog
http://www.winhelponline.com/blog/fix-file-association-error-explorer-in-windows-7/
■ File Association Fixes for Windows 7 - The Winhelponline Blog
http://www.winhelponline.com/blog/file-asso-fixes-for-windows-7/
http://www.winhelponline.com/fileasso/exe_fix_w7.zip
なお、更新対象のリソース(レジストリキー)が判明しており、再現性のある事象ということであれば、以下のツールを用いることで、
どのプロセスがリソースを更新しているのかを調査することが可能です。
■ Process Monitor
http://technet.microsoft.com/ja-jp/sysinternals/bb896645
再現性が無いということですと、調査はかなり厳しいかと思いますが、レジストリ・キーの最終更新日時を調べることで、何かヒントが見つかるかも知れません。
■ レジストリ・キーの最終更新日時を調べる- @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/1109regupdate/regupdate.html
また、エラーメッセージを表示しているプロセスを特定するのであれば、
■ Process Explorer
http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx
が使えるかと思います。
ツールバーにある「Find Window's Process」というアイコンをエラーメッセージのダイアログまでドラッグ&ドロップすると、リスト上の該当プロセスにフォーカスが当たります。
そのプロセスを右クリックし「プロパティ」を表示することで、呼び出している親プロセス名を確認することが可能です。
(ただし、親プロセスが消滅している場合は、プロセス名は表示されません。)
EXE ファイルの関連付けが原因ではなさそうですね。失礼しました。
エラーメッセージのウィンドウ タイトルに「Exploer.EXE」と表示されるケースについて調べてみたところ、以下の手順で同じメッセージが表示されることが分かりました。
1. エクスプローラーを起動
[ファイル名を指定して実行] にて [Explorer] と入力し [Enter] を実行。
→ Windows 7 では通常「ライブラリ」がフォルダが起動フォルダとして開かれます。
2. 「ライブラリ」フォルダにて、[Shift] + [右クリックを実行]
→ 「コマンド ウィンドウをここで開く」が表示されます。
3. 「コマンド ウィンドウをここで開く」を選択します。
→ 以下のメッセージが表示されます。
[Window Title]
Explorer.EXE
[Content]
指定されたファイルに対してこの操作を行うプログラムが関連付けられていません。プログラムをインストールするか、既にプログラムがインストールされている場合はコントロール パネルの [既定のプログラム] でプログラムを関連付けてください。
[OK]
恐らくですが、特定の拡張子の関連付けが問題というわけでは無く、カレントディレクトリが「特殊フォルダ」(「ライブラリ」フォルダなど)の状態で、エクスプローラを起動しようとしているのが原因な気がします。
ありがとうござます。
なるほど、おそらくChromeが何かのアクションをする際に、特殊なディレクトリをカレントディレクトリとして処理しているようですね。
開発陣にフィードバック出来ればと思うのですが、再現させるのが難しいので、なかなか難しいところです。
とりあえずこの現象が起こった際にはOSごと再起動すればしばらくは再発しないので、しばらくはそれで凌ごうかと思います。ありがとうございました。
情報のご提供ありがとうございます。
早速レジストリを比較してみましたところ、結構な差異(主に不足している)を確認しましたが、
よくよく確認するとクリーンインストール直後のレジストリと同じ値であったため、この部分が
原因ではない気がしています。
その後、色々と調査しまして、原因となっていそうなプロセスが特定出来ました。
Google Chromeしか起動していない状態で、新規タブを追加して数秒後にタブを閉じるとかなりの確率で発生することを確認したため、他の常駐ソフトをあらかた終了させた上で再現するか確認したところ、再現してしまったので、Chromeが原因ということで間違いなさそうです。(Firefox、IEでも確認しましたが、再現しません)
ただ、同様の現象が発生している事例が他に見つからないようなので、引き続き何か情報がありましたらご教示願います。
Chromeの機能拡張を全てOFFにしてみてください。
それで大丈夫なようでしたら、
機能拡張をひとつずつ追加していって下さい。
エラーが発生した時点で追加した機能拡張が怪しいです。
書き忘れましたが、エクステンションは全て無効にした状態でも発生するので、拡張機能のせいではないと思います。
EXE ファイルの関連付けが原因ではなさそうですね。失礼しました。
エラーメッセージのウィンドウ タイトルに「Exploer.EXE」と表示されるケースについて調べてみたところ、以下の手順で同じメッセージが表示されることが分かりました。
1. エクスプローラーを起動
[ファイル名を指定して実行] にて [Explorer] と入力し [Enter] を実行。
→ Windows 7 では通常「ライブラリ」がフォルダが起動フォルダとして開かれます。
2. 「ライブラリ」フォルダにて、[Shift] + [右クリックを実行]
→ 「コマンド ウィンドウをここで開く」が表示されます。
3. 「コマンド ウィンドウをここで開く」を選択します。
→ 以下のメッセージが表示されます。
恐らくですが、特定の拡張子の関連付けが問題というわけでは無く、カレントディレクトリが「特殊フォルダ」(「ライブラリ」フォルダなど)の状態で、エクスプローラを起動しようとしているのが原因な気がします。
2013/04/20 16:14:47ありがとうござます。
2013/04/26 19:14:04なるほど、おそらくChromeが何かのアクションをする際に、特殊なディレクトリをカレントディレクトリとして処理しているようですね。
開発陣にフィードバック出来ればと思うのですが、再現させるのが難しいので、なかなか難しいところです。
とりあえずこの現象が起こった際にはOSごと再起動すればしばらくは再発しないので、しばらくはそれで凌ごうかと思います。ありがとうございました。