MSScriptControl Msscript.ocx 常见错误解决

运行时出现COM组件未注册及使用C#脚本计算出现如下异常:

无法将类型为“MSScriptControl.ScriptControlClass”的 COM 对象强制转换为接口类型“MSScriptControl.IScriptControl”。此操作失败的原因是对 IID 为“{0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))

解决办法:

为了确保脚本引擎能正确调用请参照执行如下操作


1.运行- Regsvr32 msscript.ocx

2.运行- regedt32.exe
3.在注册表编辑器中定位到 HKCR\Typelib\{0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}\1.0\0\Win32节点
4.更改该节点的默认值,改为C:\Windows\system32\msscript.ocx,去掉默认的引号。注意win7或server2008 64位 此处的值为C:\Windows\SysWOW64\msscript.ocx

5.如果64位的iis应用程序池设置,启用32位应用程序。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
详见http://bbs.csdn.net/topics/390381933 另外里面有几个控件可能也用得着,你懂的。 驱动器 C 中的卷没有标签。 .\MSSCRIPT\VBE600CHS1\script 的目录 2013/08/19 11:03 <DIR> . 2013/08/19 11:03 <DIR> .. 1998/08/05 04:12 <DIR> CHINESE 1998/07/29 18:59 109,969 DISPEX.DLL 1998/07/29 18:59 1,209,970 JSCRIPT.DLL 1997/05/24 17:16 2,154 MSSCRIPT.CNT 1997/05/24 17:16 70,780 MSSCRIPT.HLP 1998/05/01 08:39 133,392 MSSCRIPT.OCX 1998/05/13 06:53 576 README.TXT 1998/07/29 18:59 989,779 VBSCRIPT.DLL 7 个文件 2,516,620 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE 的目录 1998/08/05 04:12 <DIR> . 1998/08/05 04:12 <DIR> .. 1998/08/05 04:12 <DIR> CONTROLS 1998/08/05 04:12 <DIR> CRYSREPT 1998/08/05 04:12 <DIR> MSAGENT 2013/08/19 11:03 <DIR> SCRIPT 2013/08/19 11:14 <DIR> WINLESS 0 个文件 0 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE\CONTROLS 的目录 1998/08/05 04:12 <DIR> . 1998/08/05 04:12 <DIR> .. 1997/03/19 11:40 28,160 DBGRDCHS.DLL 1997/03/19 11:40 86,016 MSCHTCHS.DLL 2 个文件 114,176 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE\CRYSREPT 的目录 1998/08/05 04:12 <DIR> . 1998/08/05 04:12 <DIR> .. 1997/03/18 19:40 21,504 CC245CHS.DLL 1 个文件 21,504 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE\MSAGENT 的目录 1998/08/05 04:12 <DIR> . 1998/08/05 04:12 <DIR> .. 1998/02/25 03:10 328,336 MSAGENT.CHS.EXE 1 个文件 328,336 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE\SCRIPT 的目录 2013/08/19 11:03 <DIR> . 2013/08/19 11:03 <DIR> .. 1998/06/15 04:46 18,104 JSCHS.DLL 1998/05/01 08:38 13,584 MSSCRCHS.DLL 1994/04/04 03:23 2,420 MSSCRIPT.CNT 1994/04/04 03:34 239,528 MSSCRIPT.HLP 1998/06/15 04:46 14,632 VBSCHS.DLL 5 个文件 288,268 字节 .\MSSCRIPT\VBE600CHS1\script\CHINESE\WINLESS 的目录 2013/08/19 11:14 <DIR> . 2013/08/19 11:14 <DIR> .. 1998/06/18 00:39 13,690 LTWTCT98.CHI 1998/06/18 00:39 19,382 LTWTCT98.CHM 2013/08/19 11:14 24,427 LTWTCT98.chw 1998/07/08 11:00 32,768 MSWLSCHS.DLL 4 个文件 90,267 字节 所列文件总数: 20 个文件 3,359,171 字节 20 个目录 984,694,784 可用字节
这个错误通常是由于缺少相关的组件或对象库引起的。在VBScript中,`System.Text.Encoding`是不可直接创建对象的。为了解决这个问题,可以使用`ScriptControl`对象来进行Base64编码。以下是修改后的代码示例: ```vbscript Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile("input.txt", True) strText = "这是要保存的字符串内容" objFile.Write strText objFile.Close Set objShell = CreateObject("Shell.Application") Set sourceFolder = objShell.NameSpace(".") Set compressedFile = sourceFolder.Items.Item("input.txt") zipPath = "compressed.zip" objShell.NameSpace(zipPath).CopyHere compressedFile Set objStream = CreateObject("ADODB.Stream") objStream.Type = 1 ' Binary objStream.Open objStream.LoadFromFile zipPath base64String = objStream.Read( -1 ) objStream.Close Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile zipPath Set scriptControl = CreateObject("MSScriptControl.ScriptControl") scriptControl.Language = "JScript" base64String = scriptControl.Eval("(function(){var base64EncodeChars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';var out='',i=0,len=base64String.length;while(i<len){var c1,c2,c3,enc1,enc2,enc3,enc4;c1=base64String.charCodeAt(i++);c2=base64String.charCodeAt(i++);c3=base64String.charCodeAt(i++);enc1=c1>>2;enc2=((c1&3)<<4)|(c2>>4);enc3=((c2&15)<<2)|(c3>>6);enc4=c3&63;if(isNaN(c2)){enc3=enc4=64;}else if(isNaN(c3)){enc4=64;}out=out+base64EncodeChars.charAt(enc1)+base64EncodeChars.charAt(enc2)+base64EncodeChars.charAt(enc3)+base64EncodeChars.charAt(enc4);}return out;})()") WScript.Echo base64String ``` 这段修正后的代码使用了`MSScriptControl.ScriptControl`对象来执行JScript代码进行Base64编码。它将字符串保存到txt文件中,将txt文件压缩为zip文件,然后将zip文件内容转换为Base64字符串并输出。 请确保在运行VBScript之前已经安装了相应的运行环境,如Windows操作系统。 希望这次能够解决问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值