2009-06-09 4 views
28

Je veux générer des chaînes GUID dans VBScript. Je sais qu'il n'y a pas de fonction intégrée dans VBScript pour en générer une. Je ne veux pas utiliser les GUID générés au hasard. Peut-être existe-t-il un objet ActiveX qui peut être créé en utilisant CreateObject() qui est sûr d'être installé sur les versions (plus récentes) de Windows qui peuvent générer un GUID?Comment générer un GUID dans VBScript?

+0

Je pense que la dernière ligne de la fonction de la réponse acceptée a la qualité beaucoup plus faible que la [le plus voté un] (http://stackoverflow.com/a/968790/2932052). Peut-être une raison de repenser votre décision? – Wolf

Répondre

28

How Can I Create a GUID Using a Script? (in: Hey, Scripting Guy! Blog) dit ceci:

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

Cependant, notez que Scriptlet.TypeLib.Guid retourne une chaîne terminée par zéro, ce qui peut provoquer des choses à ignore everything after the GUID. Pour résoudre ce problème, vous devrez peut-être utiliser:

Set TypeLib = CreateObject("Scriptlet.TypeLib") 
myGuid = TypeLib.Guid 
myGuid = Left(myGuid, Len(myGuid)-2) 
Wscript.Echo myGuid 
+0

Merci! J'aime le "Hey, Scripting Guy!" lien! – vividos

+8

Pour toute personne utilisant cette méthode, sachez que l'objet 'Scriptlet.TypeLib' renverra _the GUID_ chaque fois que vous appelez la propriété' GUID'. Si vous devez générer plusieurs GUID, détruisez et recréez l'objet 'Scriptlet.TypeLib' ou, mieux encore, enveloppez-le dans une fonction comme d'autres l'ont montré afin que l'objet soit créé et détruit avec chaque appel de fonction. – Bond

+0

@vividos lien brisé est fixé maintenant (grâce à Google) – Wolf

2
Set tlib = Server.CreateObject("Scriptlet.TypeLib") 
strGuid = tlib.Guid 
41
Function CreateGUID 
    Dim TypeLib 
    Set TypeLib = CreateObject("Scriptlet.TypeLib") 
    CreateGUID = Mid(TypeLib.Guid, 2, 36) 
End Function 

Cette fonction retourne un GUID ordinaire, par exemple, 47BC69BD-06A5-4617-B730-B644DBCD40A9.

Si vous voulez un GUID dans un format de registre, par exemple, {47BC69BD-06A5-4617-B730-B644DBCD40A9}, changement de

CreateGUID = Left(TypeLib.Guid, 38) 
+0

Meilleure réponse: combine fournissant une fonction pas trop intelligent et en ajoutant des informations supplémentaires sur les détails. Cela devrait être la réponse acceptée. – Wolf

8
' Returns a unique Guid on every call. Removes any cruft. 
Function CreateGuid() 
    CreateGuid = Left(CreateObject("Scriptlet.TypeLib").Guid,38) 
End Function 
Questions connexes