Obsah
ProgID (Programmatic Identifier)
ProgID (zkratka pro *Programmatic Identifier*) je textový řetězec používaný v operačním systému Microsoft Windows k jednoznačné identifikaci COM tříd (Component Object Model) a typů souborů v registru systému. ProgID slouží jako člověkem čitelné jméno, které je snáze použitelné než binární identifikátor CLSID.
Co je ProgID?
Každá COM třída má:
- CLSID – globálně jedinečný identifikátor (GUID) ve formátu `{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}`
- ProgID – lidsky čitelné jméno, např. `Excel.Application`, `Word.Document.12`, `Scripting.FileSystemObject`
ProgID je uložen v registru Windows pod klíčem:
HKEY_CLASSES_ROOT\<ProgID>
Struktura ProgID
Formát ProgID obvykle následuje tento vzor:
<NázevAplikace>.<NázevObjektu>[.Verze]
Příklady:
- `Word.Document.8` – dokument pro Word 97–2003
- `Excel.Application` – aktuální verze Excelu (bez specifikace verze)
- `Outlook.Application.16` – Outlook verze 16 (součást Office 2016+)
Verze je volitelná. Pokud není uvedena, použije se nejnovější registrovaná verze daného ProgID.
Vztah mezi ProgID, CLSID a registrem
V registru Windows je každý ProgID propojen se svým CLSID:
HKEY_CLASSES_ROOT\Excel.Application
(Default) = "Microsoft Excel Application"
CLSID = "{00024500-0000-0000-C000-000000000046}"
Zároveň pod klíčem CLSID najdeme odkaz zpět na ProgID:
HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}
(Default) = "Microsoft Excel Application"
ProgID = "Excel.Application"
Toto dvojité mapování umožňuje systému rychle převádět mezi čitelným jménem a interním identifikátorem.
Použití ProgID
ProgID je běžně používán v různých technologiích:
- Skriptování (VBScript, PowerShell, JScript):
var excel = new ActiveXObject("Excel.Application");
- Windows API – funkce jako `CLSIDFromProgID`
- Registrační asociace souborů – např. `.docx` → `Word.Document.12`
- Kancelářské automatizace – ovládání Wordu, Excelu apod. z externích aplikací
Příklad v PowerShellu
$word = New-Object -ComObject "Word.Application" $word.Visible = $true $doc = $word.Documents.Add()
Tento kód vytvoří novou instanci Microsoft Wordu pomocí ProgID `Word.Application`.
Důležité poznámky
- ProgID není globálně unikátní – jiný vývojář může zaregistrovat stejný ProgID. Proto spolehlivějším identifikátorem zůstává CLSID.
- ProgID může být registrován jak v HKEY_LOCAL_MACHINE\Software\Classes, tak v HKEY_CURRENT_USER\Software\Classes, což umožňuje uživatelské přepsání systémových nastavení.
- Moderní aplikace a rozhraní (např. .NET Core, UWP) se postupně od COM a ProgID vzdalují ve prospěch bezpečnějších a platformově neutrálních technologií.
Související pojmy
- CLSID – Class Identifier (GUID)
- COM – Component Object Model
- ActiveX
- File association – Asociace souborových přípon
Reference
- [https://learn.microsoft.com/en-us/windows/win32/com/-programmatic-identifiers|Microsoft Learn: Programmatic Identifiers]
- [https://learn.microsoft.com/en-us/previous-versions/windows/desktop/automat/clsid-key-hklm|CLSID and ProgID in the Registry]
