用VBS生成GUID

标签: , , ,

这个程序应该是出自微软的脚本专家,网上也有很多人复制粘贴过,代码一模一样而且不注明出处,这我不想多说,我说过很多次了。我要说的是里面生成的GUID是无法直接使用的,在我写《桌面上出现无法删除图标的解决方法》中的VBS程序时曾经测试过用VBS代码模拟那些流氓软件,在桌面上创建删不到的图标(其实也就写写注册表,一点技术含量也没有,拿来忽悠不明真相的群众罢了),写注册表的时候要用到GUID,按脚本专家给出的代码却产生了错误。

Set TypeLib = CreateObject("Scriptlet.TypeLib")
Wscript.Echo TypeLib.Guid

表面上正确输出了一个形如

{24DD18D4-C902-497F-A64B-28B2FA741661}

的GUID,但是如果直接在脚本中使用,会出现问题。原因如下

Set TypeLib = CreateObject("Scriptlet.TypeLib")
Wscript.Echo TypeLib.Guid
WScript.Echo Len(TypeLib.Guid)

Len(TypeLib.Guid)返回的值是40而不是38,也就是说在前38个字符后面有两个不可打印的字符,所有如果直接在脚本中使用会多出两个额外的字符,写入注册表的时候就达不到预期的效果。

综上,正确的代码应该是

Set TypeLib = CreateObject("Scriptlet.TypeLib")
strGUID = Left(TypeLib.Guid,38)
WScript.Echo strGUID

在此奉劝不明真相的同学,在复制粘贴别人的代码的时候最好测试一下,并给出原文的链接,尊重别人的知识产权。

随机文章:

  1. 那些长的像UTF-8的GBK编码
  2. 115网盘真实下载地址解析工具及其原理(VBS版)
  3. Python调用COM组件
  4. 在Windows 2008 R2下安装PSDK
  5. JavaScript里的sprintf函数

留下回复