1

私はC#でActiveXコントロールを作成し、regasmコマンドを使用して動作させました。セキュリティレベルが低く設定されている限り、正常に動作します。次のステップとして、.cabインストーラー(ICD-インターネットコンポーネント)を作成しました。ダウンローダー)、テスト証明書を使用して.cabファイルとActiveX.dllファイルに署名しました。ブラウザからhtmlページにアクセスすると、インストール部分はIEのデフォルトのセキュリティ設定で正常に機能しますが、最後には何もインストールされていないようで、ActiveXの代わりに赤い十字が表示されます。さらに、Windowsディレクトリの下のダウンロードプログラムファイルフォルダを調べました。ステータス列に「不明」という単語が表示されています。他のすべてのActiveXに「インストール」されている間。何が問題なのか。さらに、regasmコマンドを使用してアセンブリを登録すると、正常に機能します。ActiveXに署名しましたが、ブラウザの設定でセキュリティバーを低くする必要がありますか?なぜそうなのですか?では、署名の目的は何ですか?利用したRegisterServer=yes私の.infファイルで

誰かがすでにこの問題を経験している場合は、私に知らせてください。

4

2 に答える 2

3

IEで実行するには、IObjectSafetyを実装して、信頼できない呼び出し元や信頼できないデータで安全に呼び出されることをIEが認識できるようにする必要もあります。(それが実際に安全である場合、それは)

個人的には、これはC ++とATLでのみ行っており、C#では行っていませんが、C#でこれを実現するのに役立つと思われるブログ投稿を次に示します。

http://blog.devstone.com/aaron/2007/06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

これは、悪意のある個人によるスクリプトがオブジェクトを使用してIEが提供する通常のセキュリティをバイパスする可能性があるため、ActiveXオブジェクトは信頼できないページ自体から防御する必要があるためです。

あなたがタクシーに署名するとき、あなたは彼らがダウンロードしているタクシーが彼らがダウンロードしていると思うものであるとユーザーに伝えています-つまり、悪意のある個人があなたのタクシーを危険なものと交換していません。彼らがあなたを発行者として信頼しているなら、ActiveXObjectがそれ自体で、または彼らが信頼している他のコードと組み合わせて何も悪いことをしないと彼らは信頼することができます。

IObjectSafetyを実装する場合、INTERFACESAFE_FOR_UNTRUSTED_CALLER|を返します。INTERFACESAFE_FOR_UNTRUSTED_DATAは、オブジェクトが他のユーザーによって悪意を持って使用されることはないため、ユーザーが明示的に信頼していないコードと組み合わせて実行しても安全であることをIEに通知しています。

于 2009-10-29T16:38:27.910 に答える
1

私にとって、上記の解決策は機能しません。tlbも登録する必要がありました

と:regasm MyDll.DLL / tlb

于 2012-01-05T09:55:02.370 に答える