Как сгенерировать GUID в VBScript? - PullRequest
29 голосов
/ 09 июня 2009

Я хочу генерировать строки GUID в VBScript. Я знаю, что в VBScript нет встроенной функции для ее генерации. Я не хочу использовать случайно сгенерированные GUID. Может быть, есть объект ActiveX, который можно создать с помощью CreateObject (), который обязательно будет установлен на (более новые) версии Windows, которые могут генерировать GUID?

Ответы [ 4 ]

47 голосов
/ 09 июня 2009
Function CreateGUID
  Dim TypeLib
  Set TypeLib = CreateObject("Scriptlet.TypeLib")
  CreateGUID = Mid(TypeLib.Guid, 2, 36)
End Function

Эта функция будет возвращать простой GUID, например, 47BC69BD-06A5-4617-B730-B644DBCD40A9.

Если вам нужен GUID в формате реестра, например, {47BC69BD-06A5-4617-B730-B644DBCD40A9}, измените последнюю строку функции на

CreateGUID = Left(TypeLib.Guid, 38)
32 голосов
/ 09 июня 2009

Как я могу создать GUID, используя скрипт? (в: Эй, автор сценариев! Блог) говорит это:

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

Однако обратите внимание, что Scriptlet.TypeLib.Guid возвращает строку с нулевым символом в конце, которая может привести к тому, что некоторые вещи игнорируют все после GUID . Чтобы это исправить, вам может понадобиться:

Set TypeLib = CreateObject("Scriptlet.TypeLib")
myGuid = TypeLib.Guid
myGuid = Left(myGuid, Len(myGuid)-2)
Wscript.Echo myGuid
8 голосов
/ 29 сентября 2012
' Returns a unique Guid on every call. Removes any cruft.
Function CreateGuid()
    CreateGuid = Left(CreateObject("Scriptlet.TypeLib").Guid,38)
End Function
2 голосов
/ 09 июня 2009
Set tlib = Server.CreateObject("Scriptlet.TypeLib")
strGuid = tlib.Guid
...