By Xah Lee. Date:

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


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
 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

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 (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 );