Alkalmazásregisztráció
Ez a témakör azt ismerteti, hogy az alkalmazások hogyan tehetnek közzé olyan információkat magukról, amelyek bizonyos forgatókönyvek engedélyezéséhez szükségesek. Ide tartoznak az alkalmazás megkereséséhez szükséges információk, az alkalmazás által támogatott műveletek és az alkalmazás által kezelhető fájltípusok.
Ez a témakör a következőképpen van rendszerezve:
- Végrehajtható alkalmazás megkeresése
- Alkalmazások regisztrálása
- Igék és egyéb fájltársítási adatok regisztrálása
- Észlelt típusú regisztrálása
- Kapcsolódó témakörök
Jegyzet
Az alkalmazások regisztrálhatók a Programhozzáférés és a számítógép alapértelmezésének beállítása (SPAD) és az alapértelmezett programok (SYDP) vezérlőpult-alkalmazásokban is. Az SPAD- és SYDP-alkalmazásregisztrációról további információt Fájltársítások és alapértelmezett programok, valamint A programhozzáférés és a számítógép alapértelmezett beállításainak (SPAD) beállításacímű cikkben talál.
Végrehajtható alkalmazás megkeresése
Ha a rendszer meghívja a ShellExecuteEx függvényt egy végrehajtható fájl nevével a lpFile paraméterben, a függvény több helyen is megkeresi a fájlt. Javasoljuk, hogy regisztrálja az alkalmazást a alkalmazás elérési útjai beállításjegyzék-alkulcsban. Így elkerülhető, hogy az alkalmazások módosítsák a rendszer PATH környezeti változóit.
A fájl a következő helyeken kérve van:
- Az aktuális munkakönyvtár.
- A Windows könyvtár csak (nem keresnek alkönyvtárakat).
- A Windows\System32 könyvtár.
- A PATH környezeti változóban felsorolt könyvtárak.
- Ajánlott: HKEY_LOCAL_MACHINE\Szoftveres\Microsoft\Windows\CurrentVersion\alkalmazás elérési útjai
Alkalmazások regisztrálása
Az alkalmazás elérési útjai és alkalmazások beállításjegyzék-alkulcsok egyaránt a rendszer viselkedésének regisztrálására és szabályozására szolgálnak az alkalmazások nevében. Az alkalmazás elérési útjai alkulcs az előnyben részesített hely.
Az Alkalmazás elérési útja alkulcs használata
A Windows 7-ben és újabb verziókban erősen javasoljuk, hogy a gépek helyett felhasználónként telepítse az alkalmazásokat. A felhasználónként telepített alkalmazások regisztrálhatók HKEY_CURRENT_USER\Microsoft\Microsoft\Windows\CurrentVersion\alkalmazáselérési utakalatt. A számítógép összes felhasználója számára telepített alkalmazás regisztrálható HKEY_LOCAL_MACHINE\Szoftver\Microsoft\Windows\CurrentVersion\alkalmazáselérési utakalatt.
Az alkalmazásútvonalak alatt található bejegyzések elsősorban a következő célokra használhatók:
- Az alkalmazás végrehajtható fájlnevének leképezése a fájl teljes elérési útjára.
- A PATH környezeti változóra vonatkozó adatok előre beírása alkalmazásonként, folyamatonként.
Ha alkalmazáselérési utak alkulcsának neve megegyezik a fájlnévvel, a Rendszerhéj két műveletet hajt végre:
- A fájl teljes elérési útja az (alapértelmezett) bejegyzés.
- Az alkulcs Elérési út bejegyzése előre be van állítva a folyamat PATH környezeti változójára. Ha ez nem kötelező, az elérési út értéke elhagyható.
A következő lehetséges problémákat kell figyelembe venni:
- A Shell a parancssor hosszát * 2 karakter MAX_PATH korlátozza. Ha sok fájl szerepel a beállításjegyzék bejegyzései között, vagy az elérési útjaik hosszúak, a listában később a fájlnevek elveszhetnek, mivel a parancssor csonkolt.
- Egyes alkalmazások nem fogadnak el több fájlnevet a parancssorban.
- Egyes alkalmazások, amelyek több fájlnevet is elfogadnak, nem ismerik fel a Rendszerhéj által biztosított formátumot. A Shell idézőjeles sztringként adja meg a paraméterlistát, de egyes alkalmazásokhoz idézőjelek nélkül is szükség lehet sztringekre.
- Nem minden húzható elem része a fájlrendszernek; például nyomtatók. Ezek az elemek nem rendelkeznek szabványos Win32-elérési útokkal, így nem lehet értelmes lpParameters értéket adni a ShellExecuteEx.
A DropTarget bejegyzés használata elkerüli ezeket a lehetséges problémákat azáltal, hogy hozzáférést biztosít az összes vágólapformátumhoz, beleértve a CFSTR_SHELLIDLIST (hosszú fájllisták esetén) és a CFSTR_FILECONTENTS (nem fájlrendszerbeli objektumok esetén).
Az alkalmazások viselkedésének regisztrálása és szabályozása az Alkalmazáselérési útvonalak alkulcskal:
Adjon hozzá egy, a végrehajtható fájl nevével megegyező nevű alkulcsot az alkalmazás elérési útjai alkulcshoz, ahogyan az a következő beállításjegyzék-bejegyzésben látható.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion App Paths file.exe (Default) DontUseDesktopChangeRouter DropTarget Path UseUrl
Az alkalmazás elérési útjai alkulcs bejegyzéseinek részleteiért tekintse meg az alábbi táblázatot.
Beállításjegyzék-bejegyzés | Részletek |
---|---|
(Alapértelmezett) | Az alkalmazás teljes elérési útja. Az (Alapértelmezett) bejegyzésben megadott alkalmazásnév .exe kiterjesztéssel vagy anélkül is megadható. Ha szükséges, a ShellExecuteEx függvény hozzáadja a bővítményt alkalmazáselérési utak alkulcs keresésekor. A bejegyzés REG_SZ típusú. |
DontUseDesktopChangeRouter | A hibakereső alkalmazások esetében kötelező, hogy elkerülje a fájl párbeszédpaneljének holtpontjait a Windows Explorer-folyamat hibakeresése során. A DontUseDesktopChangeRouter bejegyzés beállítása azonban a változásértesítések kissé kevésbé hatékony kezelését eredményezi. A bejegyzés REG_DWORD típusú, és az érték 0x1. |
DropTarget | Osztályazonosító (CLSID). A DropTarget-bejegyzés egy objektum (általában helyi kiszolgáló, nem pedig folyamaton belüli kiszolgáló) CLSID azonosítóját tartalmazza, amely implementálja IDropTarget. Alapértelmezés szerint, ha a drop target végrehajtható fájl, és nincs megadva DropTarget érték, a Rendszerhéj parancssori paraméterré alakítja az elvetett fájlok listáját, és átadja ShellExecuteExlpParameters. |
Ösvény | Egy sztringet (pontosvesszővel tagolt címtárlista formájában) biztosít a PATH környezeti változóhoz az alkalmazás indításakor a ShellExecuteEx meghívásával. Ez a .exeteljes elérési útja. Ez REG_SZ. A Windows 7 és újabb típus lehet REG_EXPAND_SZ, és gyakran REG_EXPAND_SZ %ProgramFiles%.
Megjegyzés: A Shell által felismert (Alapértelmezett), Elérési út és DropTarget bejegyzések mellett az alkalmazások egyéni értékeket is hozzáadhatnak a végrehajtható fájl alkalmazás elérési útjaihoz alkulcsához. Arra ösztönözzük az alkalmazásfejlesztőket, hogy az alkalmazás elérési útjai alkulcsot használva adjanak alkalmazásspecifikus elérési utat ahelyett, hogy a globális rendszerútvonalat adnánk hozzá. |
Támogatottprotocolok | Létrehoz egy sztringet, amely egy adott kulcs URL-protokollsémákat tartalmaz. Ez több beállításjegyzék-értéket is tartalmazhat, amelyek jelzik, hogy mely sémák támogatottak. Ez a sztring séma1:scheme2formátumát követi. Ha ez a lista nem üres, fájl: lesz hozzáadva a sztringhez. Ez a protokoll implicit módon támogatott SupportedProtocols definiálásakor. |
UseUrl | Azt jelzi, hogy az alkalmazás elfogadhat egy URL-címet (fájlnév helyett) a parancssorban. Azoknak az alkalmazásoknak, amelyek közvetlenül az internetről nyithatnak meg dokumentumokat, például webböngészőket és média lejátszókat, be kell állítaniuk ezt a bejegyzést. Amikor a ShellExecuteEx függvény elindít egy alkalmazást, és a UseUrl=1 érték nincs beállítva, a ShellExecuteEx letölti a dokumentumot egy helyi fájlba, és meghívja a kezelőt a helyi példányon. Ha például az alkalmazás rendelkezik ezzel a bejegyzéskészlettel, és egy felhasználó a jobb gombbal egy webkiszolgálón tárolt fájlra kattint, a Megnyitás parancs elérhetővé válik. Ha nem, a felhasználónak le kell töltenie a fájlt, és meg kell nyitnia a helyi példányt. A UseUrl bejegyzés REG_DWORD típusú, az érték pedig 0x1. A Windows Vista és korábbi verziókban ez a bejegyzés azt jelezte, hogy az URL-címet át kell adni az alkalmazásnak egy helyi fájlnévvel együtt, amikor a ShellExecuteEx-en keresztül hívják meg. A Windows 7-ben azt jelzi, hogy az alkalmazás képes megérteni a neki átadott HTTP- vagy HTTPS-URL-címeket anélkül, hogy a gyorsítótárfájl nevét is meg kellene adnia. Ez a beállításkulcs a SupportedProtocols kulccsal van társítva. |
Az Alkalmazások alkulcs használata
A beállításjegyzék-bejegyzések HKEY_CLASSES_ROOT\Alkalmazások\ApplicationName.exe alkulcs alá való felvételével az alkalmazások az alábbi táblázatban látható alkalmazásspecifikus információkat adhatják meg.
Beállításjegyzék-bejegyzés | Leírás |
---|---|
shell\verb | Megadja az alkalmazás OpenWith-ből való meghívásának igemetódusát. Az itt megadott igedefiníció nélkül a rendszer feltételezi, hogy az alkalmazás támogatja CreateProcess, és átadja a fájlnevet a parancssorban. Ez a funkció az összes igemetódusra vonatkozik, beleértve a DropTarget, az ExecuteCommand és a Dynamic Data Exchange (DDE) metódusokat. |
DefaultIcon | Lehetővé teszi, hogy az alkalmazás az .exe fájlban tárolt első ikon helyett egy adott ikont adjon meg az alkalmazásnak. |
FriendlyAppName | Lehetővé teszi, hogy egy alkalmazás honosítható neve jelenjen meg ahelyett, hogy csak a megjelenő verzióinformációk jelennek meg, ami nem feltétlenül honosítható. A társítási lekérdezés ASSOCSTR beolvassa ezt a beállításjegyzék-bejegyzésértéket, és visszalép a FileDescription név használatára a verzióinformációkban. Ha ez a név hiányzik, a társítás lekérdezése alapértelmezés szerint a fájl megjelenítendő nevére kerül. Az alkalmazásoknak ASSOCSTR_FRIENDLYAPPNAME kell használniuk ezeket az információkat a megfelelő viselkedés eléréséhez. |
Támogatotttípusok | Az alkalmazás által támogatott fájltípusok listája. Ezzel lehetővé teszi, hogy az alkalmazás szerepeljen a Megnyitás párbeszédpanel kaszkádolt menüjében. |
NoOpenWith | Azt jelzi, hogy nincs megadva alkalmazás a fájltípus megnyitásához. Vegye figyelembe, hogy ha egy OpenWithProgIDs alkulcs fájltípus szerint van beállítva egy alkalmazáshoz, és maga a ProgID alkulcs nem rendelkezik NoOpenWith bejegyzéssel, akkor az alkalmazás akkor is megjelenik az ajánlott vagy elérhető alkalmazások listájában, ha megadta a NoOpenWith bejegyzést. További információ: Alkalmazás belefoglalása a Megnyitás párbeszédpanelen és Alkalmazás kizárása a Megnyitás párbeszédpanelen. |
IsHostApp | Azt jelzi, hogy a folyamat egy gazdagépfolyamat, például Rundll32.exe vagy Dllhost.exe, és nem ajánlott figyelembe venni Start menü rögzítését vagy felvételét a leggyakrabban használt (MFU) listába. Ha nem null argumentumlistát vagy explicit alkalmazásfelhasználói modellazonosítót (AppUserModelIDs)tartalmazó parancsikonnal indítja el, a folyamat rögzíthető (ez a parancsikon). Az ilyen billentyűparancsok az MFU-listában való részvételre jelölt parancsikonok. |
NoStartPage | Azt jelzi, hogy az alkalmazás végrehajtható és billentyűparancsait ki kell zárni a Start menüből, valamint a rögzítésből vagy az MFU-listába való felvételből. Ez a bejegyzés általában a rendszereszközök, a telepítők és az eltávolítók, valamint az olvasási fájlok kizárására szolgál. |
UseExecutableForTaskbarGroupIcon | A tálcán a végrehajtható fájl alapértelmezett ikonja jelenik meg, ha nincs rögzíthető parancsikon ehhez az alkalmazáshoz, és nem az elsőként észlelt ablak ikonja. |
TaskbarGroupIcon | Megadja a tálca ikon felülbírálásához használt ikont. Az ablak ikont általában a tálcához használják. A TaskbarGroupIcon bejegyzés beállításával a rendszer ehelyett az alkalmazás .exe ikont használja. |
Példák
A HKEY_CLASSES_ROOT\Alkalmazások\ApplicationName.exe alkulcson keresztüli alkalmazásregisztrációk néhány példája a következő. Minden beállításjegyzék-bejegyzés értéke REG_SZ típusú, kivéve DefaultIcon, amely REG_EXPAND_SZ típusú.
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
Igék és egyéb fájltársítási információk regisztrálása
A SystemFileAssociations HKEY_CLASSES_ROOT\alatt regisztrált alkulcsok lehetővé teszik a Shell számára, hogy meghatározza a fájltípusok attribútumainak alapértelmezett viselkedését, és engedélyezze a megosztott fájltársításokat. Amikor a felhasználók módosítják egy fájltípus alapértelmezett alkalmazását, az új alapértelmezett alkalmazás ProgID azonosítója elsőbbséget élvez az igék és más társítási információk megadásakor. Ennek a prioritásnak az az oka, hogy ez az első bejegyzés a társítási tömbben. Ha az alapértelmezett program módosul, az előző ProgID adatai már nem érhetők el.
Ha proaktív módon szeretné kezelni az alapértelmezett programok módosításának következményeit, a HKEY_CLASSES_ROOT\SystemFileAssociations használatával regisztrálhatja az igéket és más társítási információkat. A társítási tömb ProgID azonosítóját követő helyük miatt ezek a regisztrációk alacsonyabb prioritást élveznek. Ezek a SystemFileAssociationsregistrations akkor is stabilak, ha a felhasználók módosítják az alapértelmezett programokat, és helyet biztosítanak a másodlagos parancsok regisztrálásához, amelyek mindig elérhetők lesznek egy adott fájltípushoz. Egy beállításjegyzék-példát a jelen témakör későbbi részében Észlelt típus regisztrálása című témakörben talál.
Az alábbi beállításjegyzék-példa bemutatja, mi történik, ha a felhasználó a Vezérlőpulton futtatja az Alapértelmezett programok elemet, hogy a .mp3 fájlok alapértelmezett értékét App2ProgID-ra módosítsa. Az alapértelmezett beállítás módosítása után a Verb1 már nem érhető el, és a Verb2 lesz az alapértelmezett.
HKEY_CLASSES_ROOT
.mp3
(Default) = App1ProgID
HKEY_CLASSES_ROOT
App1ProgID
shell
Verb1
HKEY_CLASSES_ROOT
App2ProgID
shell
Verb2
Észlelt típus regisztrálása
Az észlelt típusok beállításjegyzék-értékei a HKEY_CLASSES_ROOT\SystemFileAssociations beállításkulcs alkulcsaként vannak definiálva. Az észlelt típus például szöveg a következőképpen van regisztrálva:
HKEY_CLASSES_ROOT
SystemFileAssociations
text
shell
edit
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
open
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
A fájltípus érzékelt típusát jelzi, ha a fájltípus alkulcsában felvesz egy Észlelt típus értéket. A PerceivedType érték a HKEY_CLASSES_ROOT\SystemFileAssociations beállításjegyzék-alkulcsban regisztrált észlelt típus nevére van beállítva, ahogyan az az előző beállításjegyzék-példában is látható. Ha úgy szeretné deklarálni .cpp fájlokat, hogy "szöveg" típusúak, például adja hozzá a következő beállításjegyzék-bejegyzést:
HKEY_CLASSES_ROOT
.cpp
PerceivedType = text