2011-05-22

What's Windows CLSID? Second Life UUID?

Perm url with updates: http://xahlee.org/mswin/windows_CLSID_GUID_UUID.html

What's Windows CLSID? Second Life UUID?

Xah Lee, 2011-05-22

you know how on Windows you see this strings like this {838f9f38-f241-11de-a663-002421597a5c}? For example, on my PC, i have these files generated by Windows Vista:

NTUSER.DAT{838f9f38-f241-11de-a663-002421597a5c}.TM.blf
NTUSER.DAT{838f9f38-f241-11de-a663-002421597a5c}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{ac2d24f1-7d46-11e0-b16f-002421597a5c}.TM.blf
NTUSER.DAT{ac2d24f1-7d46-11e0-b16f-002421597a5c}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{bc030bf2-8ab8-11de-a498-002421597a5c}.TM.blf
NTUSER.DAT{bc030bf2-8ab8-11de-a498-002421597a5c}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{c328fef0-6a85-11db-9fbd-cf3689cba3de}.TxR.0.regtrans-ms
NTUSER.DAT{c328fef0-6a85-11db-9fbd-cf3689cba3de}.TxR.blf
NTUSER.DAT{c328fef1-6a85-11db-9fbd-cf3689cba3de}.TM.blf
NTUSER.DAT{c328fef1-6a85-11db-9fbd-cf3689cba3de}.TMContainer00000000000000000001.regtrans-ms
{1142e5c3-9068-44d7-be47-bcc2b55df042}
{7f144bc9-70e0-4dac-b227-7cfb808ce5f5}
{f145a167-2aa9-4bb1-9128-31bc1537e7bb}

And in my Event Viewer (〔Control Panel\Administrative Tools\Event Viewer〕 or 〔%SystemRoot%\system32\eventvwr.msc /s〕), for example there's a message:

The application-specific permission settings do not grant Local Launch permission for the COM Server application with CLSID {C97FCC79-E628-407D-AE68-A06AD6D8B4D1} to the user NT AUTHORITY\SYSTEM SID (S-1-5-18) from address LocalHost (Using LRPC). This security permission can be modified using the Component Services administrative tool.

What are those long strings?

CLSID = Globally unique identifier

That string is basically just a ID string. It is long because it is meant to be unique, to the degree that a randomly generated string will unlikely to be the same.

It is 32 digits of hexadecimal. So, the total possible such string is 16^32, which is 340282366920938463463374607431768211456 or approximately 10^39. Here's a example:

It is written in blocks separated by hyphen, then enclosed by curly brackets.

 12345678 1234 1234 1234 123456789012
{C97FCC79-E628-407D-AE68-A06AD6D8B4D1}
 8        4    4    4    12

Here's a quote from Wikipedia Globally unique identifier:

Microsoft Windows uses GUIDs internally to identify the classes and interfaces of COM objects. A script can activate a specific class or object without having to know the name or location of the dynamic linked library that contains it.

Quote from Microsoft 2.5.5 Globally Unique Identifiers (GUIDs) @ Source msdn.microsoft.com:

In Microsoft Windows® programming and in Windows operating systems, a globally unique identifier (GUID), as specified in [RFC4122], is a 128-bit value that is a binary unique identifier (ID) for a specific entity. The term universally unique identifier (UUID) is sometimes used in Windows protocol specifications as a synonym for GUID.

CLSID = UUID = Universally unique identifier

Microsoft CLSID is just a different name for the scheme known as UUID (Universally Unique Identifier). The essence is that it's just a sequence of 32 hexadecimal digits, generated randomly, used to assign a ID to items.

It's used in Second Life too. In Second Life, every “agent” (that is, every account in Second Life), has a UUID, and every item you see in Second Life has a UUID (e.g. images (aka textures), objects (prims), sounds, animation files). For example, here's a LSL code excerpt:

key pSprite = "1f9e3064-47e1-87bd-1b82-20638ae6e36e"; // particle image.

updateParticle() {
    // make particle, with burstrate and sprite age depending on avatar speed
    float speed = llVecMag(llGetVel());
    if (speed < 1.) {
        bRate = 1.;
        pAge = 1.2;
    } else {
        bRate = distBetweenCrumb/speed;
        pAge = trailLength / speed;
    }
    partyOn ( pPtrn, beginColor, endColor, bRate, pAge, (key)pSprite, startScale, endScale, changeOrientationQ );
}