如何在VBScript中生成GUID?

如何在VBScript中生成GUID?,vbscript,guid,uuid,Vbscript,Guid,Uuid,我想在VBScript中生成GUID字符串。我知道VBScript中没有用于生成一个脚本的内置函数。我不想使用随机生成的guid。可能有一个ActiveX对象可以使用CreateObject()创建,该对象一定要安装在可以生成GUID的(较新)Windows版本上?这样说: Set TypeLib = CreateObject("Scriptlet.TypeLib") Wscript.Echo TypeLib.Guid 但是,请注意,Scriptlet.TypeLib.Guid返回一个以nul

我想在VBScript中生成GUID字符串。我知道VBScript中没有用于生成一个脚本的内置函数。我不想使用随机生成的guid。可能有一个ActiveX对象可以使用CreateObject()创建,该对象一定要安装在可以生成GUID的(较新)Windows版本上?

这样说:

Set TypeLib = CreateObject("Scriptlet.TypeLib")
Wscript.Echo TypeLib.Guid
但是,请注意,Scriptlet.TypeLib.Guid返回一个以null结尾的字符串,这可能会导致某些事情失败。要解决此问题,您可能需要使用:

Set TypeLib = CreateObject("Scriptlet.TypeLib")
myGuid = TypeLib.Guid
myGuid = Left(myGuid, Len(myGuid)-2)
Wscript.Echo myGuid
此函数将返回普通GUID,例如,
47BC69BD-06A5-4617-B730-B644DBCD40A9

如果需要注册表格式的GUID,例如,
{47BC69BD-06A5-4617-B730-B644DBCD40A9}
,请将函数的最后一行更改为

CreateGUID = Left(TypeLib.Guid, 38)

谢谢我喜欢“嘿,编写脚本的家伙!”链接!对于使用此方法的任何人,请注意,
Scriptlet.TypeLib
对象将在每次调用
GUID
属性时返回相同的GUID。如果您需要生成多个GUI,请销毁并重新创建
Scriptlet.TypeLib
对象,或者更好的做法是,将其包装在一个函数中,就像其他函数所示,以便在每次函数调用时创建和销毁该对象。@Victos断开的链接现已修复(感谢Google)最佳答案:结合提供不太智能的功能和添加有关详细信息的附加材料。这应该是被接受的答案。对我来说最有效。我认为被接受的答案的质量远远低于被接受的答案。也许是重新考虑你决定的理由?
Function CreateGUID
  Dim TypeLib
  Set TypeLib = CreateObject("Scriptlet.TypeLib")
  CreateGUID = Mid(TypeLib.Guid, 2, 36)
End Function
CreateGUID = Left(TypeLib.Guid, 38)
' Returns a unique Guid on every call. Removes any cruft.
Function CreateGuid()
    CreateGuid = Left(CreateObject("Scriptlet.TypeLib").Guid,38)
End Function