如何在VBScript中生成GUID?

viv*_*dos 30 vbscript uuid guid

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

Hel*_*len 48

Function CreateGUID
  Dim TypeLib
  Set TypeLib = CreateObject("Scriptlet.TypeLib")
  CreateGUID = Mid(TypeLib.Guid, 2, 36)
End Function
Run Code Online (Sandbox Code Playgroud)

此函数将返回普通GUID,例如47BC69BD-06A5-4617-B730-B644DBCD40A9.

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

CreateGUID = Left(TypeLib.Guid, 38)
Run Code Online (Sandbox Code Playgroud)

  • 最佳答案:结合提供不太智能的功能并添加有关详细信息的附加材料。这应该是公认的答案。 (2认同)

Rog*_*mbe 33

如何使用脚本创建GUID?(参见:嘿,Scripting Guy!Blog)说:

Set TypeLib = CreateObject("Scriptlet.TypeLib")
Wscript.Echo TypeLib.Guid
Run Code Online (Sandbox Code Playgroud)

但是,请注意Scriptlet.TypeLib.Guid返回以null结尾的字符串,这可能会导致某些内容忽略GUID之后的所有内容.要解决这个问题,您可能需要使用:

Set TypeLib = CreateObject("Scriptlet.TypeLib")
myGuid = TypeLib.Guid
myGuid = Left(myGuid, Len(myGuid)-2)
Wscript.Echo myGuid
Run Code Online (Sandbox Code Playgroud)

  • 对于使用此方法的任何人,请注意每次调用`GUID`属性时,`Scriptlet.TypeLib`对象将返回_相同的GUID_.如果您需要生成多个GUID,请销毁并重新创建`Scriptlet.TypeLib`对象,或者更好的是,将其包装在其他人已经显示的函数中,以便在每个函数调用时创建和销毁该对象. (8认同)

BSa*_*ita 8

' Returns a unique Guid on every call. Removes any cruft.
Function CreateGuid()
    CreateGuid = Left(CreateObject("Scriptlet.TypeLib").Guid,38)
End Function
Run Code Online (Sandbox Code Playgroud)