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:
- vyhledání spustitelného aplikace
- registrace aplikací
- registrace sloves a dalších informací o přidružení souborů
- registrace vnímaný typ
- související témata
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í:
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
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