关于VBS调用MSWinsock控件

翻译|其它|编辑:郝浩|2007-08-23 09:38:21.000|阅读 888 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

Windows  脚本可以调用  MSWinsock  控件获得比较强大的网络访问能力,但那个106KB  mswinsck.ocx(V6.0.89.88)不是系统自带的,这使得该控件的实用性大打折扣。而且,脚本要调用  MSWinsock  还必须克服一个困难。

"MSWinsock"为关键字,使用百度搜索网页,可以获得至少3VBS调用  MSWinsock  控件的例子:获取本机IP、端口扫描和发在"黑防"的《VBS+MSWinsock  打造灵巧  UDP  后门》。但是,当你下载并注册  mswinsck.ocx,然后尝试那些代码时,却会得到一个"类别未授权使用(Class is not licensed for use)"错误,错误号  0x80040112。那些代码的作者似乎都以为  MSWinsock  和一般的控件一样,只要用  regsvr32注册就能正常使用了,没有实际测试它的可移植性。而转贴文章的人,更不会关心内容是否可靠,一味地复制粘贴而已。结果,网上所有关于  VBS  调用  MSWinsock  的例子都是"空中楼阁",没有一个跑的起来。国内如此,国外也一样。所有对该控件无法使用的质疑,都被人以"需要注册"为理由打发了。当然,也有了解"真相"的人,但其给出的解决方案竟然是用  VB  重新写个  ocx  封装  MSWinsock,这实在是@#$%^&!

那么,"真相"究竟是什么?搜索"类别未授权使用"和错误号,这是个好主意,但结果不理想。我们需要逆向思考,为什么原作者不会遇到错误。答案是原作者的  mswinsck.ocx  不是单独注册的,而是随  VB  一起安装的。其中的差别在于,后者会安装  VB  控件的设计时许可证(design-time license)ActiveX  控件的  License  有两种:设计时(design-time)和运行时(run-time)。当编译调用了某个控件的  exe/dll/ocx  时,编译器会自动加入该控件的运行时许可证,所以"重新写个  ocx  封装  MSWinsock"这个办法可行。使用脚本直接调用  MSWinsock  时没有运行时许可证,这时脚本宿主会尝试在注册表中获取设计时许可证,单独注册的  MSWinsock  没有相应的设计时许可证,所以就出错了。

  VS.NET  安装盘里有  VB6  控件的授权密钥(\Extras\VB6 Controls\VB6Controls.reg),导入注册表后就能正常使用包括  MSWinsock  在内的  VB6  控件了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP