我想在程序中使用GUID来作某项配置的唯一标识,请问使用哪个函数来生成GUID?

解决方案 »

  1.   

    上面己经回答得很好了.CoCreateGuid
    Creates a GUID, a unique 128-bit integer used for CLSIDs and interface identifiers.HRESULT CoCreateGuid(
      GUID  *pguid  //Pointer to the GUID on return
    );
     
    Parameter
    pguid 
    [out] Pointer to the requested GUID on return. 
    Return Value
    S_OK 
    The GUID was successfully created. 
    Win32 errors are returned byUuidCreate but wrapped as an HRESULT.Res
    The CoCreateGuid function calls the RPC function UuidCreate, which creates a GUID, a globally unique 128-bit integer. Use the CoCreateGuid function when you need an absolutely unique number that you will use as a persistent identifier in a distributed environment.To a very high degree of certainty, this function returns a unique value – no other invocation, on the same or any other system (networked or not), should return the same value.QuickInfo
      Windows NT: Use version 3.1 or later.
      Windows: Use Windows 95 or later.
      Windows CE: Unsupported.
      Header: Declared in objbase.h.
      Import Library: Included as a resource in ole32.dll.
      

  2.   

    GUID guid;
    CoCreateGuid(&guid); char strData1[9];
    char strData2[5];
    char strData3[5];
    char strData4[8][3]; sprintf(strData1,"%08X",guid.Data1);
    sprintf(strData2,"%04X",guid.Data2);
    sprintf(strData3,"%04X",guid.Data3);
    sprintf(strData4[0],"%02X",guid.Data4[0]);
    sprintf(strData4[1],"%02X",guid.Data4[1]);
    sprintf(strData4[2],"%02X",guid.Data4[2]);
    sprintf(strData4[3],"%02X",guid.Data4[3]);
    sprintf(strData4[4],"%02X",guid.Data4[4]);
    sprintf(strData4[5],"%02X",guid.Data4[5]);
    sprintf(strData4[6],"%02X",guid.Data4[6]);
    sprintf(strData4[7],"%02X",guid.Data4[7]); m_strID.Format("{%s-%s-%s-%s%s-%s%s%s%s%s%s}",strData1,strData2,strData3,
    strData4[0],strData4[1],strData4[2],strData4[3],strData4[4],strData4[5],strData4[6],strData4[7]);
      

  3.   

    #include "rpc.h"
    #include "rpcdce.h"
          
    GUID guid;
    if(S_OK!=CoCreateGuid(&guid))     //4+2+2+8 = 16个字节
    {
    return;
    }
    else
    {
    BYTE * buf = new BYTE;
    UuidToString((UUID*)&guid, &buf);
    m_Edit = buf;
    UpdateData(FALSE);
    }