您现在所在的位置是
发表在 2017年12月 的所有文章
64位系统VBS调用32位COM组件0
今天有人问我,为什么他的VBS脚本在64位Windows 7中用VbsEdit可以直接执行,但是直接双击就会出错:ActiveX 部件不能创建对象: ‘MSWinsock.Winsock’。
在64位系统中存在两组不同的wscript.exe和cscript.exe,一组是64位的,在C:\Windows\System32文件夹;一组是32位的,在C:\Windows\SysWOW64文件夹。由于64位和32位的内存模式不同,64位进程无法加载32位DLL,故以DLL封装COM组件无法在64位进程调用。
具体到上面的问题,MSWinsock.Winsock是32位COM组件,而直接双击运行VBS文件默认是以C:\Windows\System32\wscript.exe为宿主的,也就是64位的进程,64位进程无法加载32位的DLL,所以会出现“ActiveX 部件不能创建...