调用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