2

編集:詳細については、投稿の最後を参照してください。

Firebreath フレームワーク (1.7.0) を介して作成されたプラグインをロードしようとしています。Internet Explorer 10 を使用してデスクトップ モードで Windows 8 を使用しています。Firebreath に付属の組み込みテスト FBTtestPlugin でこれを再現しました。オブジェクト要素が作成されるという点で失敗はサイレントですが、プラグインによって指定されたプロパティがありません。これをデバッグするにはどうすればよいですか?Microsoft Internet Explorer 互換性ツールは、プラグインの読み込みに失敗していると報告しています。 MSIECTT (FBTtestPlugin は 3 つのプラグインをロードするため、3 つのエラーが発生します。)

同じ設定で動作する他の (FB 以外の) プラグインがあります (例: http://msdn.microsoft.com/en-us/library/dd565667(v=vs.85).aspxは正常に動作します)このサイトのすべての例と同様にhttp://ie.microsoft.com/testdrive/browser/activexfiltering/Default.html )。

セキュリティ設定の膨大な組み合わせを試しましたが、これまでで最もリラックスした設定は次のとおりです。

  • ツール / 安全性 / ActiveX フィルタリング: チェックされていません ActiveX フィルタリングはオフです
  • インターネット オプション / セキュリティ / インターネット: 「保護モードを有効にする」のチェックが外されている
  • インターネット オプション / セキュリティ / インターネット: カスタム レベルです。ActiveX では、「ActiveX フィルタリングを許可する」などの制限的なプロパティを除いて、すべてが「有効」になっています。
  • これらの設定に基づいて、あらゆる種類のセキュリティ警告が表示されます。 セキュリティ設定

注: これらの設定を保持するつもりはありません。プラグインを機能させてから、逆方向に作業してセキュリティ設定を再度有効にしたいだけです。

更新 私はこれを部分的に理解し、FB テスト FBTestPlugin を実行できるようになりました。IE のデバッグを容易にするために、レジストリ キー HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth を 0 として定義し、ブラウザーが使用するプロセスを 1 つに制限しました。残念ながら、IE10 では、Program Files と Program Files (x86) の iexplore.exe の両方が 64 ビット バージョンの IE に直接送信されます。これにより、32 ビット プラグインの実行が妨げられ ( http://support.microsoft.com/kb/2716529を参照)、症状はサイレント エラーです。

ただし、私のプラグインは IE での読み込みに失敗し、上記のタイトルを変更した質問は未解決のままです。問題は、サイレント ロードの失敗です。ただし、プラグインの設定に関係があるのではないかと思います。互換性テスト ツールに表示される CLSID (上記の例のように) は、有効な GUID ではなく、すべて 0 として表示されます。さらに、レジストリは奇妙に見えます: キー HKCR\Company.Name は HKCR\Company.Name.1 と同じように存在しますが、どちらも空です (正常に動作するプラグインのように CLSID の子を持つ代わりに)。予想される GUID は存在しますが、偽の名前 "applications.'" の下にあります。現在、regsvr32 の実行時に呼び出されるコードを掘り下げています。

皆さんありがとう!

4

2 に答える 2

5

誰かが結果を使用できることを期待して、この回答を提供しています。

IE は 2 つの理由でプラグインをロードしていませんでした。1) TabProcGrowth レジストリ キーと IE 10 の 32/64 ビットの問題 ( http://support.microsoft.com/kb/2716529 ) このキーを定義しないでください。

2) プラグインの説明でアポストロフィ (例: "Gluttco's Plugin") を使用していたため、コンポーネントの登録が台無しになりました。

詳細 2): DllRegisterServer コードをトレースしたところ、プラグインの説明にアポストロフィが含まれていたため、偽のレジストリ エントリが表示されていることがわかりました。例えば「ジョーのプラグイン」。ジェネレーター (fbgen.py/cmake) は、不正な形式の FBControls.rgs ファイルを生成しました (引用符をエスケープしていないため、(s 'Joe's cool plugin' などの) 文字列リテラルが含まれていました)。DllRegisterServer コード (から呼び出されたregsvr32) は、(atlbase.h の奥深くで) このファイルの内容を (埋め込まれた?) 使用しました。奇妙なことに、パーサーはエラーを検出しませんでした (または何らかの方法で誤って回復しました)。プロセス モニターから、偽のキーが追加されていることがわかりました。 、適切なレジストリ キーの追加を再開する前に。

今のところ、Firebreath プラグインの説明にアポストロフィを含めるべきではありません (おそらく他の文字も不正です)。fbgen.py でこれらの文字をチェックし、場合によってはそれらをエスケープ、拒否、または置換することが賢明な場合があります。

于 2013-06-26T22:39:46.017 に答える
4

Searching found this: http://msdn.microsoft.com/en-us/library/dd565667(v=vs.85).aspx

Do you have any group policies in place that could affect it? I don't think this is related directly to FireBreath, rather to the activex configuration...

I also found http://social.technet.microsoft.com/Forums/windows/en-US/90c3202c-448b-42b7-acf7-dab8dba7b000/one-or-more-activex-controls-could-not-be-displayed-because-either which has a few things you could try.

于 2013-06-26T02:15:33.453 に答える