Uživatelské nástroje

Nástroje pro tento web


progid

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

progid.txt · Poslední úprava: autor: admin