謎のエラーダイアログ
新年早々に新PC(Windows10)を購入し、愛用ツールなどを新規インストールする作業も一段落したある日、ネットからダウンロードしたソフトにこのようなエラーが出るようになった。
ファイルまたはアセンブリ 'file:///xxxxxxxxxxxxxxxxxxxxxxxxx'、またはその依存関係の 1 つが読み込めませんでした。操作はサポートされません。 (HRESULT からの例外:0x80131515)
解決法
せっかちな人のために先に解決法を書いておく。
まずエラー内容に示されているその問題のDLLをエクスプローラーで表示に、右クリックからプロパティを選ぶ。
次にプロパティの一番下のセキュリティ欄に「ブロックの解除」というチェックがあるのでチェックして適用あるいはOKを押す。
これでエラーは出なくなる。なおこの問題のDLLが大量にあって手作業で直すのが大変な場合、以下のサイトの情報が役に立つかもしれない(筆者は試していない)。
原因
この問題は以前のバージョンのWindowsにも存在していたようなのだが、この数年普通に使っていて特に発生した覚えがなく、新マシン導入後にぶち当たって頭を悩ませることになった。なぜいまごろになってこんなことが起きるようになったのか? というわけで調査を続行してみた。
「DLしたZIPファイルをエクスプローラーを使用して解凍した」時に問題が発生し、「私が使用しているExpLzhではこの制限は発生しません」とある。おかしい。私が今回ファイル展開に使用したのもExpLzhなのだが。
どうもExpLzhが怪しいので、更に調べる。
去年の9月、ExplzhにZoneIDを付与する機能がつけられたらしい。なるほど、さっきのエラーはこのZoneIDとかいうのが絡んでいるのだな? だが「初期状態で無効化されている」らしいし私には関係ないはずだが…。 Explzhの設定を見てみる。
んん?ZoneIDを維持する設定が有効になっている。私はこんな設定いじった記憶がないのだが??? まさか…。
v.7.29 で実装した ZoneID を維持して展開する機能については、デフォルトで 「on」となるように変更されました。(ご要望が多かったため、です。既に設定済みの環境では設定通りに動作します)
これかーーーーー!!!
これで「いまごろになって」「特に何もいじってないのに」DLLエラーに悩まされた原因がわかった。最新版を新規インストールした時点でこの罠にハマっていたのだ…。
ユーザーから要望が多かったらしいが、謎エラーにハマって発狂するユーザーはそれ以上に発生すると思われるのだが…セキュリティ意識が高いのは結構なことだが、なにも知らない善良なユーザーが犠牲になると考えるとなんというか…モヤッとする。
というわけで、今後このエラーに悩まされたくない人は、Explzhの設定から「NTFS の ZoneID を維持して展開」のチェックを外しておこう、というお話でした。
解凍する前にZIP状態でブロック解除しておくと、解凍結果もみんな解除済になってて楽ですね。