标题: 用VBS生成GUID
作者: Demon
链接: https://demon.tw/programming/generate-guid-in-vbs.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
这个程序应该是出自微软的脚本专家,网上也有很多人复制粘贴过,代码一模一样而且不注明出处,这我不想多说,我说过很多次了。我要说的是里面生成的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
在此奉劝不明真相的同学,在复制粘贴别人的代码的时候最好测试一下,并给出原文的链接,尊重别人的知识产权。
赞赏微信赞赏支付宝赞赏
随机文章: