如何在JScript.NET中以编程方式实现IObjectSafety

时间:2011-12-23 22:37:58

标签: .net jscript jscript.net

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中实现它?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

经过广泛的研究后我发现,由于JScript.NET中绝对没有IObjectSafety的文档,我无法直接在代码中实现此接口。

我最终安顿下来,将所需的注册表项标记为“安全初始化”和“安全编写脚本”:

[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部署在目标计算机上时。它完美无缺。