2009-06-09 15 views
28

VBScriptでGUID文字列を生成します。 VBScriptには、VBScriptを生成するための組み込み関数はありません。私はランダムに生成されたGUIDを使用したくありません。おそらく、CreateObject()を使用して作成できるActiveXオブジェクトがあります。これは、GUIDを生成できる(新しい)Windowsバージョンにインストールされますか?VBScriptでGUIDを生成するには?

+0

に、関数の最後の行を変更私は(受け入れ答えは、[最高のものを投票]よりもはるかに低い品質を持っていると思いますhttp://stackoverflow.com/a/968790/2932052)。おそらくあなたの決定を再考する理由は? – Wolf

答えて

28

How Can I Create a GUID Using a Script? (in: Hey, Scripting Guy! Blog)が、これは言う:

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

しかし、Scriptlet.TypeLib.Guidはignore everything after the GUIDにいくつかのことを引き起こす可能性があり、NULLで終わる文字列を返すことに注意してください。それを修正するには、使用する必要があります

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

ありがとう!私は "Hey、Scripting Guy!"が好きです。リンク! – vividos

+8

このメソッドを使用する人は、 'Scriptlet.TypeLib'オブジェクトが' GUID'プロパティを呼び出すたびに同じGUID_を返すことに注意してください。複数のGUIDを生成する必要がある場合は、 'Scriptlet.TypeLib'オブジェクトを破棄して再作成するか、他の関数と同じようにラップしてオブジェクトが作成され、各関数呼び出しで破棄されるようにします。 – Bond

+0

@vividosの壊れたリンクは現在修正されています(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 

この関数は、プレーンGUID、例えば、47BC69BD-06A5-4617-B730-B644DBCD40A9を返します。

レジストリ形式でGUIDを使用する場合は、例えば、{47BC69BD-06A5-4617-B730-B644DBCD40A9}

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

ベストアンサー:あまりスマートでない機能を提供し、詳細についての情報を追加します。これは受け入れられた答えでなければなりません。 – Wolf

8
' Returns a unique Guid on every call. Removes any cruft. 
Function CreateGuid() 
    CreateGuid = Left(CreateObject("Scriptlet.TypeLib").Guid,38) 
End Function 
関連する問題