Sdílet prostřednictvím


Registrace aplikace

Toto téma popisuje, jak můžou aplikace zveřejnit informace o sobě potřebné k povolení určitých scénářů. To zahrnuje informace potřebné k vyhledání aplikace, příkazy, které aplikace podporuje, a typy souborů, které může aplikace zpracovat.

Toto téma je uspořádané takto:

Poznámka

Aplikace lze také zaregistrovat v ovládacích panelech Nastavit programový přístup a Výchozí nastavení počítače (SPAD) a Nastavit výchozí programy (SYDP). Informace o registraci aplikací SPAD a SYDP naleznete v tématu Guidelines for File Associations and Default Programsa Set Program Access and Computer Defaults (SPAD).

Vyhledání spustitelného souboru aplikace

Když ShellExecuteEx funkce je volána s názvem spustitelného souboru v jeho lpFile parametru, existuje několik míst, kde funkce hledá soubor. Doporučujeme zaregistrovat aplikaci v podklíči registru Cesty aplikací. Tím se vyhnete nutnosti aplikací upravovat systémovou proměnnou prostředí PATH.

Soubor se hledá v následujících umístěních:

  • Aktuální pracovní adresář.
  • Pouze adresář Windows (neprohledají se žádné podadresáře).
  • Adresář Windows\System32.
  • Adresáře uvedené v proměnné prostředí PATH.
  • Doporučeno: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Cesty aplikací

Registrace aplikací

Cesty aplikací i podklíče registru aplikace se používají k registraci a řízení chování systému jménem aplikací. Upřednostňovaným umístěním je Cesty aplikací podklíč.

Použití podklíče Cesty aplikace

Ve Windows 7 a novějších verzích důrazně doporučujeme instalovat aplikace pro jednotlivé uživatele místo na počítač. Aplikaci nainstalovanou pro jednotlivé uživatele lze zaregistrovat v části HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Cesty aplikací. Aplikaci nainstalovanou pro všechny uživatele počítače lze zaregistrovat v části HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

Položky nalezené v Cest aplikací se používají především pro následující účely:

  • Mapování názvu spustitelného souboru aplikace na plně kvalifikovanou cestu k danému souboru.
  • Předpověděné informace do proměnné prostředí PATH v jednotlivých aplikacích, a to na základě procesu.

Pokud název podklíče Cest aplikací odpovídá názvu souboru, shell provede dvě akce:

  • Položka (Výchozí) se používá jako plně kvalifikovaná cesta k souboru.
  • Položka Cesta pro tento podklíč je předpřipravena k proměnné prostředí PATH tohoto procesu. Pokud to není povinné, je možné hodnotu Cesta vynechat.

Mezi potenciální problémy, které je potřeba znát, patří:

  • Prostředí omezuje délku příkazového řádku na MAX_PATH * 2 znaky. Pokud existuje mnoho souborů uvedených jako položky registru nebo jejich cesty jsou dlouhé, názvy souborů později v seznamu mohou být ztraceny, protože příkazový řádek je zkrácen.
  • Některé aplikace nepřijímají více názvů souborů v příkazovém řádku.
  • Některé aplikace, které přijímají více názvů souborů, nerozpoznávají formát, ve kterém je prostředí poskytuje. Shell poskytuje seznam parametrů jako řetězec v uvozovkách, ale některé aplikace můžou vyžadovat řetězce bez uvozovek.
  • Ne všechny položky, které lze přetáhnout, jsou součástí systému souborů; například tiskárny. Tyto položky nemají standardní cestu Win32, takže neexistuje způsob, jak poskytnout smysluplný lpParameters hodnotu ShellExecuteEx.

Použití položky DropTarget zabraňuje těmto potenciálním problémům tím, že poskytuje přístup ke všem formátům schránky, včetně CFSTR_SHELLIDLIST (pro dlouhé seznamy souborů) a CFSTR_FILECONTENTS (pro jiné než systémové objekty).

Registrace a řízení chování aplikací pomocí podklíče Cesty aplikací:

  1. Přidejte podklíč se stejným názvem jako spustitelný soubor do podklíče Cesty aplikací, jak je znázorněno v následující položce registru.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Podrobnosti o cest aplikací položek podklíčů najdete v následující tabulce.

Položka registru Podrobnosti
(Výchozí) Je plně kvalifikovaná cesta k aplikaci. Název aplikace zadaný v položce (Výchozí) lze uvést s příponou .exe nebo bez této .exe. V případě potřeby funkce ShellExecuteEx přidá rozšíření při hledání Cest aplikací podklíče. Položka je typu REG_SZ.
DontUseDesktopChangeRouter Je povinné pro aplikace ladicího programu, aby se zabránilo zablokování dialogového okna souborů při ladění procesu Průzkumníka Windows. Nastavení položky DontUseDesktopChangeRouter však vytváří o něco méně efektivní zpracování oznámení o změnách. Položka je typu REG_DWORD a hodnota je 0x1.
DropTarget Je identifikátor třídy (CLSID). Položka DropTarget obsahuje CLSID objektu (obvykle místní server, nikoli procesový server), který implementuje IDropTarget. Ve výchozím nastavení platí, že pokud je cílem přetažení spustitelný soubor a není zadána žádná hodnota DropTarget, shell převede seznam vyřazených souborů na parametr příkazového řádku a předá ho ShellExecuteEx prostřednictvím lpParameters.
Cesta Poskytuje řetězec (ve formě seznamu adresářů oddělených středníkem) pro připojení k proměnné prostředí PATH při spuštění aplikace voláním ShellExecuteEx. Jedná se o plně kvalifikovanou cestu k .exe. Je to REG_SZ. V systému Windows 7 a novějšíchmůže být typ REG_EXPAND_SZa běžně se REG_EXPAND_SZ %ProgramFiles%. Poznámka: Kromě položek Path (Default), Path a DropTarget rozpoznaných prostředím může aplikace také přidávat vlastní hodnoty do podklíče Cesty aplikací spustitelného souboru. Doporučujeme vývojářům aplikací používat podklíč Cesty aplikací, aby místo přidávání do globální systémové cesty poskytovali cestu specifickou pro aplikaci.
SupportedProtocols Vytvoří řetězec, který obsahuje schémata protokolu URL pro daný klíč. Může obsahovat více hodnot registru, které označují, která schémata jsou podporována. Tento řetězec se řídí formátem scheme1:scheme2. Pokud tento seznam není prázdný, soubor: se přidá do řetězce. Tento protokol je implicitně podporován, pokud je definován SupportedProtocols.
UseUrl Označuje, že vaše aplikace může na příkazovém řádku přijmout adresu URL (místo názvu souboru). Aplikace, které můžou otevírat dokumenty přímo z internetu, jako jsou webové prohlížeče a přehrávače médií, by měly tuto položku nastavit.
Když ShellExecuteEx funkce spustí aplikaci a hodnota UseUrl=1 není nastavená, ShellExecuteEx stáhne dokument do místního souboru a vyvolá obslužnou rutinu v místní kopii.
Pokud má například aplikace tuto položku nastavenou a uživatel klikne pravým tlačítkem myši na soubor uložený na webovém serveru, zpřístupní se příkaz Otevřít. Pokud ne, uživatel bude muset stáhnout soubor a otevřít místní kopii.
Položka UseUrl je typu REG_DWORD a hodnota je 0x1.
V systému Windows Vista a dříve tato položka značí, že adresa URL by měla být předána aplikaci spolu s názvem místního souboru při volání prostřednictvím ShellExecuteEx. Ve Windows 7 označuje, že aplikace dokáže pochopit jakoukoli adresu URL http nebo https, která je předána do ní, aniž by bylo nutné zadat také název souboru mezipaměti. Tento klíč registru je přidružený k SupportedProtocols klíč.

Použití podklíče aplikací

Prostřednictvím zahrnutí položek registru do podklíče HKEY_CLASSES_ROOT\Aplikace\ApplicationName.exe mohou aplikace poskytnout informace specifické pro aplikaci uvedené v následující tabulce.

Položka registru Popis
shell\verb Poskytuje metodu příkazu pro volání aplikace z OpenWith. Bez zde zadané definice příkazu systém předpokládá, že aplikace podporuje CreateProcessa předá název souboru na příkazovém řádku. Tato funkce se vztahuje na všechny metody příkazů, včetně DropTarget, ExecuteCommand a DDE (Dynamic Data Exchange).
DefaultIcon Umožňuje aplikaci poskytnout konkrétní ikonu představující aplikaci místo první ikony uložené v souboru .exe.
FriendlyAppName Poskytuje způsob, jak získat lokalizovatelný název pro aplikaci místo informací o verzi, které se zobrazují, což nemusí být lokalizovatelné. Dotaz přidružení ASSOCSTR přečte tuto hodnotu položky registru a vrátí se zpět k použití názvu FileDescription v informacích o verzi. Pokud tento název chybí, dotaz přidružení ve výchozím nastavení nastaví zobrazovaný název souboru. Aplikace by měly používat ASSOCSTR_FRIENDLYAPPNAME k načtení těchto informací, aby získaly správné chování.
SupportedTypes Zobrazí seznam typů souborů, které aplikace podporuje. To umožňuje, aby aplikace byla uvedena v kaskádové nabídce dialogového okna Otevřít s.
NoOpenWith Označuje, že pro otevření tohoto typu souboru není zadána žádná aplikace. Mějte na paměti, že pokud byl podklíč OpenWithProgIDs nastaven pro aplikaci podle typu souboru a samotný podklíč ProgID nemá také položku NoOpenWith, tato aplikace se zobrazí v seznamu doporučených nebo dostupných aplikací, i když zadal položku NoOpenWith. Další informace naleznete v tématu Jak zahrnout aplikaci do dialogového okna Otevřít v dialogovém okně a Jak vyloučit aplikaci z dialogového okna Otevřít v dialogovém okně.
IsHostApp Označuje, že proces je hostitelský proces, například Rundll32.exe nebo Dllhost.exe, a neměl by být považován za Připnutí nabídky Start nebo zahrnutí do seznamu Nejčastěji používané (MFU). Při spuštění se zástupcem, který obsahuje seznam argumentů, který neobsahuje hodnotu null, nebo explicitní ID modelu uživatele aplikace (AppUserModelIDs), může být proces připnut (jako zástupce). Tyto klávesové zkratky jsou kandidáty pro zařazení do seznamu MFU.
NoStartPage Označuje, že spustitelné soubory a klávesové zkratky aplikace by měly být vyloučeny z nabídky Start a z připnutí nebo zahrnutí do seznamu MFU. Tato položka se obvykle používá k vyloučení systémových nástrojů, instalačních programů a odinstalátorů a souborů readme.
UseExecutableForTaskbarGroupIcon Způsobí, že hlavní panel použije výchozí ikonu tohoto spustitelného souboru, pokud pro tuto aplikaci není k dispozici žádná připnutelná zkratka a místo ikony okna, které bylo poprvé zjištěno.
TaskbarGroupIcon Určuje ikonu použitou k přepsání ikony hlavního panelu. Ikona okna se obvykle používá pro hlavní panel. Nastavení položky TaskbarGroupIcon způsobí, že systém místo toho použije ikonu z .exe pro aplikaci.

Příklady

Některé příklady registrace aplikací prostřednictvím HKEY_CLASSES_ROOT\Aplikace\ApplicationName.exe podklíč jsou následující. Všechny hodnoty položek registru mají typ REG_SZ s výjimkou DefaultIcon, který je typu REG_EXPAND_SZ.

HKEY_CLASSES_ROOT
   Applications
      wordpad.exe
         FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         SupportedTypes
            .3gp2
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         DefaultIcon
            (Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
   Applications
      WScript.exe
         NoOpenWith
HKEY_CLASSES_ROOT
   Applications
      photoviewer.dll
         shell
            open
               DropTarget
                  Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
   Applications
      mspaint.exe
         SupportedTypes
            .bmp
            .dib
            .rle
            .jpg
            .jpeg
            .jpe
            .jfif
            .gif
            .emf
            .wmf
            .tif
            .tiff
            .png
            .ico

Registrace sloves a dalších informací o přidružení souborů

Podklíče zaregistrované v HKEY_CLASSES_ROOT\SystemFileAssociations umožňují prostředí definovat výchozí chování atributů pro typy souborů a povolit přidružení sdílených souborů. Když uživatelé změní výchozí aplikaci pro typ souboru, má identifikátor ProgID nové výchozí aplikace prioritu při poskytování sloves a dalších informací o přidružení. Tato priorita je způsobená první položkou v poli přidružení. Pokud dojde ke změně výchozího programu, informace pod předchozím identifikátorem ProgID už nebudou k dispozici.

Pokud chcete aktivně řešit důsledky změny výchozích programů, můžete použít HKEY_CLASSES_ROOT\SystemFileAssociations k registraci sloves a dalších informací o přidružení. Vzhledem k jejich umístění po ProgID v poli přidružení jsou tyto registrace nižší prioritou. Tyto systemFileAssociationsregistrationsregistrations jsou stabilní, i když uživatelé změní výchozí programy a poskytují umístění pro registraci sekundárních příkazů, které budou vždy k dispozici pro určitý typ souboru. Příklad registru najdete v tématu Registrace vnímaný typ dále v tomto tématu.

Následující příklad registru ukazuje, co se stane, když uživatel spustí položku Výchozí programy položku v Ovládacích panelech a změní výchozí hodnotu pro .mp3 soubory na App2ProgID. Po změně výchozího nastavení už není příkaz1 dostupný a příkaz2 se stane výchozím.

HKEY_CLASSES_ROOT
   .mp3
      (Default) = App1ProgID
HKEY_CLASSES_ROOT
   App1ProgID
      shell
         Verb1
HKEY_CLASSES_ROOT
   App2ProgID
      shell
         Verb2

Registrace vnímaný typ

Hodnoty registru pro vnímané typy jsou definovány jako podklíče HKEY_CLASSES_ROOT\SystemFileAssociations podklíč registru. Například vnímaný typ text je registrován takto:

HKEY_CLASSES_ROOT
   SystemFileAssociations
      text
         shell
            edit
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
            open
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"

Vnímaný typ souboru je označen zahrnutím hodnoty PerceivedType do podklíče typu souboru. Hodnota PerceivedType je nastavena na název vnímaného typu zaregistrovaného v HKEY_CLASSES_ROOT\SystemFileAssociations podklíč registru, jak je znázorněno v předchozím příkladu registru. Chcete-li deklarovat .cpp soubory jako vnímaného typu "text", přidejte například následující položku registru:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

typy souborů

fungování přidružení souborů

zobrazení obsahu podle typu souboru nebo typu

typ souboru

obslužné rutiny typu souboru

programových identifikátorů

vnímané typy

pole přidružení