概要

インストーラー等に必要なGUID値(世界で唯一つの値)を作成するプログラムのサンプルである。
コマンドラインで動作します。引数でGUID値を作成する個数を指定できます。このプログラムを応用すれば例えばサンプルのwxsファイルのguid値を自動的にユニークな値に変換するプログラム等の作成が可能となります。

ダウンロード

ソースコード


//      コマンドライン版GUID値作成プログラム
//      引数で作成するGUID値の個数を指定可能


#include <windows.h>  
#include <tchar.h>  

void guid_str(TCHAR* buf,int sz,GUID& g){
        _stprintf_s(buf,sz,_TEXT("%.8X-%.4X-%.4X-%.2X%.2X-"),g.Data1 , UINT32(g.Data2) ,UINT32(g.Data3) ,UINT32(g.Data4[0]),UINT32(g.Data4[1])  );
        TCHAR vs[4];
        for(int n=2;n<8;n++){
                unsigned v=g.Data4[n];
                _stprintf_s(vs,sizeof(vs)/sizeof(TCHAR),_TEXT("%.2X"),v);
                _tcscat_s(buf,sz,vs);
        }
}

void _tmain(int argc,TCHAR** argv){
        GUID guid;  
        TCHAR buf[64];
        if(SUCCEEDED(CoInitializeEx(0, COINIT_APARTMENTTHREADED))){
                int max=argc==2 ? _ttoi(argv[1]) : 1;
                for(int n=0;n<max;n++){
                        CoCreateGuid(&guid);
                        guid_str(buf,sizeof(buf)/sizeof(TCHAR),guid);
                        _tprintf(_TEXT("%s\n"),buf);
                }
                CoUninitialize();
        }  
}