去年組んだVistaなマシンのエクスプローラ周りが不安定だったのが、やっと解決した。
一時はマジで再インストールを考えたぞ…春休みだから、ある程度時間は取れるからね。
症状
- ウェルカムセンターを開くとフリーズする
- 画像/動画ファイルのサムネイルが生成されなくなる(キャッシュ分は表示される)
- Windowsフォトギャラリーで、全画面スライドショーを実行し、画像が切り替わる時のトランジション効果の種類を変えるか 、「終了」を押すとフォトギャラリーがフリーズする
- エクスプローラで上書きコピー/移動の操作をしても、上書き確認のダイアログが出ず、何も起こらない ←これ結構ひどいぞw
- ファイルのプロパティの共有タブを開くとフリーズ
特徴
- フリーズした場合はExproler.exeのプロセスを止めて、再度実行すると回復できる(しかし上と同様の操作を行えば再びフリーズする)
- いつも起こるわけではなく、起動からしばらくの間は上の操作をしても普通に動き、そのうちおかしくなる。
- 上3つに関しては同時に起こる
過程を書いているうちに長くなってしまったので、結論を先に書いちゃいますw
原因
ffdshow tryoutsのビデオデコーダー設定の、「DirectShowのコントロール」→ 「未知のアプリケーションがffdshowをロードしようとした時ダイアログを表示する」にチェックが入っていて、かつ、「以下でのみffdshowを使用する」または「以下では ffdshowを使用しない」のどちらかに”dllhost.exe”が入っていない。
~ここから推測~
Explorerがサムネイルを生成する時に、dllhost.exeを呼び出す。
このときffdshowの設定で指定した形式に関しては、ffdshow経由でサムネイルを生成するが、ffdshow が「dllhost.exeは未知のアプリである」と判断したときに、ffdshow側がダイアログを出すはずが、うまくいかずにdllhost.exe が応答待ちになっているか、フリーズする。
その結果、Vistaでdllhost.exeを利用している部分の動作に影響が出る
対処法
「DirectShowのコントロール」→「未知のアプリケーションがffdshowをロードしようとした時ダイアログを表示する」を利用する場合は、「以下でのみffdshowを使用する」または「以下では ffdshowを使用しない」のどちらかのリスト に”dllhost.exe”を追加(Beta4ではデフォルトで「以下でのみffdshowを使用する」のリストに入ってる)
いきなりエクスプローラの話からffdshowの話にぶっ飛んでるけど…以下解決までの過程を。
Vista不安定だな、とか愚痴をこの記事に書いて草稿に入れて放置している間に、偶然にも「特定のフォルダを開いた時点で起こる」ということを見つける。
そのフォルダの中身の共通点として、ビデオファイルがあるということがわかった。
この時点でコーデックを疑い始める。
色々考えてみて、怪しいと思ったのがffdshow tryouts。
結構使ってるからアンインスコするのもなーってことで、とりあえず設定でどうにかならないかと試みる。
結果、デコーダー設定の、「DirectShowのコントロール」→「未知のアプリケーションが~」にチェックが入っているとフリーズすることが判明。
インスコしているのはBeta3。ここで新しいバージョンが出ていないかどうか確かめると、Beta4があったのでバージョンアップ。念のため、インストーラで設定の初期化を選択した。再度Beta3と同じ設定を再現して、症状が出るかどうかを確認してみた。
設定で「未知のアプリケーションが~」にチェックを入れ、「ディスク クリーンアップ」で縮小表示(サムネイルキャッシュ)を消して再度ビデオのあるフォルダを開いてみたが、今度は無事にサムネイルが生成された。
何故Beta4ではうまくいった?
Beta3とBeta4の「以下でのみffdshowを使用する」の初期状態で入っているリストの差分を調べてみたところ、いくつかサムネイル生成に関係してそうなものを発見。
そこで、まずはBeta3の初期状態で入っているリストの内容をそのまま入れて、ビデオのサムネイルが生成されるかどう確かめてみると…見事に生成が止まってしまった。どうもここが原因らしい。
そこで、Beta3とBeta4の初期状態で入っているリスト差分から、怪しそうなものをピックアップして、Beta4の初期状態で入っているリストをロードした後に、怪しいやつだけ消して絞り込んでみることにした。
ここで、「dllhost.exe」がリストにないと生成が止まることがわかったってわけ。
Vistaでffdshow tryoutsを使うときには、リストからdllhost.exeを消さないように注意しましょうってことで。
某研のPCにもvista ultimateとffdshowが入っていたので、dllhost.exeをリストから抜いて再現するかどうか試したところ見事に発症。
原因はExplorerのバグだと思い込ん でたから、原因がわかるまでに3ヶ月もかかってしまったけど、これでVista再評価できるかな…デザインは気に入ってるので。特にプログレスバーとか。
最近のコメント