MSScriptControl脚本引擎使用问题

本文解决了一个关于调用VBS时遇到的ActiveX部件无法创建对象的问题。通过对比一个可以正常运行的例子,发现问题是由于设置了script.UseSafeSubset为true导致。此属性用于控制宿主应用程序的安全级别。

调用vbs时,一直报错: ActiveX 部件不能创建对象,从网上方法注册组件什么的都不管用,本地执行是可以执行的,最后找到一个简单的例子

            MSScriptControl.ScriptControl script = new ScriptControlClass();
            script.Language = "VBScript";
            script.ExecuteStatement(str);

可以执行,对比原来的方法发现问题在于script.UseSafeSubset = true;这个属性

****************************MSDN说明*****************************************************
设置或返回 Boolean 值,指明宿主应用程序是否有保密性要求。如果宿主应用程序需要安全控制,则 UseSafeSubset 为 True,否则为 False。可读写。

语法

ScriptControl.UseSafeSubset [=value]

如果 value 为 True,则不允许访问某些对象和过程。

说明

当前使用的 Script 引擎决定是否设置 UseSafeSubset 属性,以及何时进行设置。如果没有指定语言(Language 属性),则可在任意时间设置 UseSafeSubset 属性。

Script 引擎宿主可能将对 Script 引擎提出安全性要求。例如,Microsoft Internet Explorer 仅允许 Script 引擎创建和使用已标记为 safe for scripting 的外部对象。另一些宿主可能毫无安全性要求。UseSafeSubset 属性告知 ScriptControl
其宿主 Script 引擎所要求的安全级别。如果 UseSafeSubset 为 True,则 Script 引擎仅允许创建或使用已标记为 safe for scripting 的对象。有关如何设置对象为 safe for scripting 的详细信息,请在 http://www.micrososft.com 查找 "IObjectSafety" 或 "safe for scripting"。

如果 ScriptControl 包含在要求安全控制的宿主中,则 UseSafeSubset 属性被强制设置为 True,并变为只读属性。

转载于:https://www.cnblogs.com/xuruhong/p/3271763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值