Идентификаторы программ обычно используются двумя способами: для определения идентификатора класса, соответствующего идентификатору программы (функция CLSIDFromProgID ()) - это используется для последующего вызова CoCreateInstance () - и для определения идентификатора программы для данного идентификатора класса - обычно используется для отображения понятной для человека версии идентификатора класса.
Эти сопоставления подразумевают, что существует ключ HKCR {ProgId} \ CLSID со значением по умолчанию, равным идентификатору класса, и ключ HKCR \ CLSID {classid} \ ProgID со значением по умолчанию, равным ProgId, что означает, что сопоставление это один к одному. Вы просто не сможете иметь более одного идентификатора программы под одним идентификатором класса.
COM-компонент загружается путем вызова CoCreateInstance (), которому передается идентификатор класса - полученный любым возможным способом с использованием CLSIDFromProgID (). Для компонента нет способа сообщить, как был получен идентификатор класса.