発行元証明書の取り消しを確認する にチェックが入っている場合に、Imageのロードに時間がかかる

Answered 発行元証明書の取り消しを確認する にチェックが入っている場合に、Imageのロードに時間がかかる

  • Thursday, December 08, 2011 6:41 AM
     
     

    Imageを読み込んでいる画面の表示に非常に時間がかかっており、色々調べた結果、インターネットに接続していない環境で発生する現象で、インターネットオプションの「発行元証明書の取り消しを確認する」をオフにすれば改善されることがわかったのですが、ユーザーに設定を変更してもらうのはあまり望ましい解決策ではないため、アプリケーション側でどうにかならないかと調べています。

    アプリケーション構成ファイルでgenaratePublisherEvidenceをfalseにすればよいようなのですが、ここで問題が発生。

    作成しているアプリケーションはC++(アンマネージ)からC++/CLIを経由してWPFのdllを呼び出しているという、ちょっと複雑な構成になっています。

    アプリケーション構成ファイルは .dll.configでは読み込まれないようで、完全に手詰まりです。

     

    WPFのdllからアプリケーション構成ファイルを読み込む方法、あるいは全く別の方法でも構わないので、「発行元証明書の取り消しを確認する」をオフにしなくてもImageの読み込みが高速化する方法をご存知でしたら、ご教授ください。

     

    よろしくお願いいたします。

     

     

All Replies

  • Thursday, December 08, 2011 8:05 AM
     
     

    アプリケーション構成ファイルは、DLLに関するものであっても「実行ファイル名.exe.config」が読み込まれます。ファイル名を変更してください。

    また、<generatePublisherEvidence>要素には次のような記述もありました。最新バージョンに移行するのも1つの手です。

    .NET Framework Version 4 以降では、この要素はアセンブリの読み込み時間に影響を与えません。
  • Thursday, December 08, 2011 9:03 AM
     
     

    早速返信いただきありがとうございます。

    アプリケーション構成ファイルは実行ファイルがC++(アンマネージ)で作成したものであっても、実行ファイル名.exe.configで大丈夫なのでしょうか。

     

    また、残念なことに既に.NET Framework 4を使用しておりました。

    ということは、構成ファイルが無事に読み込めても速度は変わらない、ということなんでしょうか…。

  • Thursday, December 08, 2011 4:45 PM
     
     Answered

    IE のプロキシ設定で「設定を自動的に検出する」をオフにする、WinHTTP へ IE のプロキシをきちんと反映する(netsh winhttp import proxy source=ie)とかでもマシになったかもしれません。記憶に頼って書いているので効果がないかもしれませんが…。

    内部で使用される WIC(Windows Imaging Component) は基本的にコーデックの電子署名の検証プロセスを実行します。
    この挙動自体は OFF にできないと思われるので、取り消し確認のタイムアウトが短くなるように、「自動的に検出する」設定を OFF にするとか、ユーザー環境の改善になってしまいますね。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
  • Friday, December 09, 2011 12:42 AM
     
     

    なるほど。電子署名なんて設定していないのに、なんでしかもImageの部分でだけ遅くなるのかと不思議に思っていたのですが、そういうことなんですね。

     

    どうにかユーザー環境の設定を変えずに済む方法はないものなのでしょうか。

    もしくは、最悪、アプリケーション起動時にスプラッシュウィンドウを出している間に何か対応できるといいのですが。

    一度表示してしまえば、2回目以降はサクサク表示されるので。

     

    良いお知恵がございましたら、よろしくお願いいたします。

  • Friday, December 09, 2011 3:12 PM
     
     Answered

    どうにかユーザー環境の設定を変えずに済む方法はないものなのでしょうか。

    設定を変えずに署名の検証プロセスに横やり入れることができたら、セキュリティもあったもんじゃないと思います。
    なので、設定を変えずに済む方法はないと、”私は”思っています。

    もしくは、最悪、アプリケーション起動時にスプラッシュウィンドウを出している間に何か対応できるといいのですが。
    一度表示してしまえば、2回目以降はサクサク表示されるので。

    それなら、スプラッシュウィンドウを出しているときに、「1 回目」を済ませてしまえばよいのでは。(ダミーの画像でもよいわけですよね?)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
  • Tuesday, December 13, 2011 1:16 PM
     
     

    設定を変えずに署名の検証プロセスに横やり入れることができたら、セキュリティもあったもんじゃないと思います。

    なので、設定を変えずに済む方法はないと、”私は”思っています。

    それはもちろんそうですね。

    検証プロセスを強制的に無効にするのではなく、例えばWICを使用せずに画像を描画する方法などがあれば、ユーザー設定を変えずに済むかなと思ったのですが、そのあたりがよくわからなかったものですみません。

    なお、画像は画像でも遅くなるのは外部ファイルを読み込む場合のみで、表示する画像ファイル数に応じて読み込み完了までの時間が変わるようでした。(要は1個ずつの読み込み処理に時間がかかっているということですよね?)

    また、BitmapImageのCacheOptionをBitmapCacheOption.OnLoadにすることで速くなるという記事があったので、試してみたのですが、あまり変わりませんでした。

    ちなみに、画像はListBoxItemのDataTemplate内で使用しています。

     

    度々で申し訳ありませんが、外部ファイルの読み込みを速くするような方法をご存知でしたらお願いいたします。



  • Tuesday, December 27, 2011 8:07 AM
    Moderator
     
     

    こんにちは、ZAOZAO さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    原因や回避案について参考になるアドバイスをいただいているようでしたので、他の方にもこの情報を有効活用いただくため、勝手ながら私のほうで回答としてマークさせていただきました。
    回答くださったみなさん、情報ありがとうございます。

    いただいた情報の中で解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたしますね。

    今後とも、MSDN フォーラムをよろしくお願いいたします。
                                                                      
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海