Windows: What is CLSID GUID UUID

By Xah Lee. Date: . Last updated: .

Windows NTUSER.DAT CLSID

On Microsoft Windows you see filenames like this

{838f9f38-f241-11de-a663-002421597a5c}

For example, in my home directory:

Windows NTUSER.DAT 2024-09-02
Windows NTUSER.DAT 2024-09-02

What are those strings?

CLSID = Globally Unique Identifier

That string is basically just a ID string. It is 32 digits of Hexadecimal Number.

So, the total possible such string is 16^32, which is 340282366920938463463374607431768211456 or approximately 10^39.

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) At http://msdn.microsoft.com/en-us/library/cc246025%28v=PROT.13%29.aspx:

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.

Second Life UUID

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 (For example, 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 );
}