Most of the property system uses PROPERTYKEYs to identify properties. But you can also identify a property using its canonical name. For instance, PKEY_DateModified corresponds to L”System.DateModified”.
Whereas a PROPERTYKEY was good for coding and binary structures, the name is the ideal form for the registry or config files. Canonical names are meant to be programmer friendly, composed of [0-9A-Za-z.], up to 63 characters long, and are structured as Company.Group.Property. The only exception to the naming convension is that the built-in system properties are named System.Group.Property.
Anyway, converting between a canonical name and a key is easy. These two functions are very cheap (a hash table lookup, usually).
There’s even a version of PSGetPropertyDescription that takes canonical names…
PSSTDAPI PSGetPropertyDescriptionByName(LPCWSTR pszCanonicalName, __in REFIID riid, __deref_out void **ppv);