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中实现它?
非常感谢任何帮助。
答案 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部署在目标计算机上时。它完美无缺。