3

tldr; JScript.NET dll をスクリプトに対して安全であるとマークする方法は?

この JScript.NET ライブラリを検討してください(helloworld1.js)

package helloworld1{
  class test1 {
    public function test1run(){
      return 'This is a string returned from helloworld1.dll';
    }
  }
}

通してから

jsc.exe /nologo /t:library helloworld1.js

regasm /nologo /codebase helloworld1.dll

ローカルの HTML ページで次のように使用できます。

var helloworld1 = new ActiveXObject("helloworld1.test1");
alert(helloworld1.test1run());

それはすべて正常に機能し、アラートが表示されThis is a string returned from helloworld1.dllます。

今... ActiveX オブジェクトがインスタンス化されるたびにポップアップする恐ろしい IE セキュリティ警告を取り除きたい:

An ActiveX control on this page might be unsafe to interact with other parts of the page. Do you want to allow this interaction?

セキュリティ警告を削除する方法は、dll を としてマークしてsafe for scripting実装することIObjectSafetyです。

VB6 と VB.NET でこれを行う方法は知っていますが、JScript.NET で実装するにはどうすればよいですか?

どんな助けでも本当に感謝しています。

4

1 に答える 1

1

広範な調査の結果、JScript.NET には IObjectSafety に関するドキュメントがまったくないため、このインターフェイスをコードに直接実装できないことがわかりました。

最終的には、自分の dll を「初期化しても安全」および「スクリプトを実行しても安全」とマークするために必要なレジストリ キーを追加することで落ち着きました。

[HKEY_CLASSES_ROOT\CLSID\[MY_COM_CLASS_GUID]\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}]
[HKEY_CLASSES_ROOT\CLSID\[MY_COM_CLASS_GUID]\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

これらのキーは、helloworld1.dll がターゲット マシンにデプロイされるときに、セットアップ ルーチン中に追加します。それは完璧に動作します。

于 2011-12-28T22:03:15.530 に答える