Delen via


Toepassingsregistratie

In dit onderwerp wordt beschreven hoe toepassingen informatie over zichzelf kunnen weergeven die nodig is om bepaalde scenario's mogelijk te maken. Dit omvat informatie die nodig is om de toepassing te vinden, de werkwoorden die de toepassing ondersteunt en de typen bestanden die een toepassing kan verwerken.

Dit onderwerp is als volgt ingedeeld:

Notitie

Toepassingen kunnen ook worden geregistreerd in de instellingen voor programmatoegang en computerstandaarden (SPAD) en uw standaardprogramma's (SYDP) instellen. Zie Richtlijnen voor bestandskoppelingen en standaardprogramma'svoor informatie over beveiligd-WACHTWOORDVERIFICATIE- en SYDP-toepassingsregistratie, en Programmatoegang en Standaardinstellingen voor computers instellen.

Een uitvoerbaar toepassingsbestand zoeken

Wanneer de functie ShellExecuteEx wordt aangeroepen met de naam van een uitvoerbaar bestand in de parameter lpFile, zijn er verschillende plaatsen waar de functie naar het bestand zoekt. U wordt aangeraden uw toepassing te registreren in de app-paden registersubsleutel. Hierdoor voorkomt u dat toepassingen de omgevingsvariabele PATH van het systeem moeten wijzigen.

Het bestand wordt gezocht op de volgende locaties:

  • De huidige werkmap.
  • De windows- map (er worden geen submappen doorzocht).
  • De map Windows\System32.
  • Mappen die worden vermeld in de omgevingsvariabele PATH.
  • Aanbevolen: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\app-paden

Toepassingen registreren

Zowel de -apppaden als toepassingen registersubsleutels worden gebruikt om het gedrag van het systeem namens toepassingen te registreren en te beheren. De app-paden subsleutel is de voorkeurslocatie.

De subsleutel App-paden gebruiken

In Windows 7 en hoger raden we u ten zeerste aan om toepassingen per gebruiker te installeren in plaats van per computer. Een toepassing die per gebruiker is geïnstalleerd, kan worden geregistreerd onder HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App-paden. Een toepassing die is geïnstalleerd voor alle gebruikers van de computer, kan worden geregistreerd onder HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

De vermeldingen in app-paden worden voornamelijk gebruikt voor de volgende doeleinden:

  • Als u de naam van het uitvoerbare bestand van een toepassing wilt toewijzen aan het volledig gekwalificeerde pad van dat bestand.
  • Als u vooraf in de path-omgevingsvariabele informatie wilt opgeven per toepassing, per proces.

Als de naam van een subsleutel van App-paden overeenkomt met de bestandsnaam, voert de Shell twee acties uit:

  • De vermelding (standaard) wordt gebruikt als het volledig gekwalificeerde pad van het bestand.
  • De padvermelding voor die subsleutel is vooraf toegewezen aan de omgevingsvariabele PATH van dat proces. Als dit niet vereist is, kan de padwaarde worden weggelaten.

Mogelijke problemen waarmee u rekening moet houden, zijn onder andere:

  • De Shell beperkt de lengte van een opdrachtregel tot MAX_PATH * 2 tekens. Als er veel bestanden worden vermeld als registervermeldingen of hun paden lang zijn, kunnen bestandsnamen later in de lijst verloren gaan omdat de opdrachtregel wordt afgekapt.
  • Sommige toepassingen accepteren niet meerdere bestandsnamen in een opdrachtregel.
  • Sommige toepassingen die meerdere bestandsnamen accepteren, herkennen de indeling waarin de Shell deze biedt, niet. De Shell biedt de lijst met parameters als een tekenreeks tussen aanhalingstekens, maar voor sommige toepassingen zijn mogelijk tekenreeksen zonder aanhalingstekens vereist.
  • Niet alle items die kunnen worden gesleept, maken deel uit van het bestandssysteem; Bijvoorbeeld printers. Deze items hebben geen standaard Win32-pad, dus er is geen manier om een zinvolle lpParameters waarde te bieden voor ShellExecuteEx.

Als u de DropTarget-vermelding gebruikt, voorkomt u deze mogelijke problemen door toegang te bieden tot alle klembordindelingen, waaronder CFSTR_SHELLIDLIST (voor lange bestandslijsten) en CFSTR_FILECONTENTS (voor niet-bestandssysteemobjecten).

Het gedrag van uw toepassingen registreren en beheren met de subsleutel App-paden:

  1. Voeg een subsleutel toe met dezelfde naam als het uitvoerbare bestand aan de App-paden subsleutel, zoals wordt weergegeven in de volgende registervermelding.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Zie de volgende tabel voor meer informatie over de App-paden subsleutelvermeldingen.

Registervermelding Bijzonderheden
(Standaard) Is het volledig gekwalificeerde pad naar de toepassing. De naam van de toepassing die is opgegeven in de vermelding (standaard) kan worden opgegeven met of zonder de extensie .exe. Indien nodig voegt de functie ShellExecuteEx de extensie toe bij het zoeken naar app-paden subsleutel. De vermelding is van het REG_SZ type.
DontUseDesktopChangeRouter Is verplicht voor foutopsporingsprogrammatoepassingen om impasses in bestandsdialoogvensters te voorkomen bij het opsporen van fouten in het Windows Verkenner-proces. Het instellen van de vermelding DontUseDesktopChangeRouter produceert echter een iets minder efficiënte verwerking van de wijzigingsmeldingen. De vermelding is van het REG_DWORD type en de waarde is 0x1.
DropTarget Is een klasse-id (CLSID). De DropTarget-vermelding bevat de CLSID van een object (meestal een lokale server in plaats van een in-process server) die IDropTarget-implementeert. Wanneer het drop-doel een uitvoerbaar bestand is en er geen DropTarget-waarde wordt opgegeven, converteert de Shell de lijst met verwijderde bestanden naar een opdrachtregelparameter en geeft deze door aan ShellExecuteEx via lpParameters.
Pad Levert een tekenreeks (in de vorm van een door puntkomma's gescheiden lijst met mappen) die moet worden toegevoegd aan de omgevingsvariabele PATH wanneer een toepassing wordt gestart door ShellExecuteExaan te roepen. Het is het volledig gekwalificeerde pad naar de .exe. Het is van REG_SZ. In Windows 7 en hogerkan het type worden REG_EXPAND_SZen wordt dit meestal REG_EXPAND_SZ %ProgramFiles%. Opmerking: Naast de vermeldingen (Standaard), Pad en DropTarget die worden herkend door de Shell, kan een toepassing ook aangepaste waarden toevoegen aan de app-paden van het uitvoerbare bestand subsleutel. We raden toepassingsontwikkelaars aan om de app-paden subsleutel te gebruiken om een toepassingsspecifiek pad te bieden in plaats van toevoegingen aan het globale systeempad te maken.
SupportedProtocols Hiermee maakt u een tekenreeks die de URL-protocolschema's voor een bepaalde sleutel bevat. Dit kan meerdere registerwaarden bevatten om aan te geven welke schema's worden ondersteund. Deze tekenreeks volgt de notatie van scheme1:scheme2. Als deze lijst niet leeg is, bestand: wordt toegevoegd aan de tekenreeks. Dit protocol wordt impliciet ondersteund wanneer SupportedProtocols is gedefinieerd.
UseUrl Geeft aan dat uw toepassing een URL (in plaats van een bestandsnaam) op de opdrachtregel kan accepteren. Toepassingen die documenten rechtstreeks vanaf internet kunnen openen, zoals webbrowsers en mediaspelers, moeten deze vermelding instellen.
Wanneer de functie ShellExecuteEx een toepassing start en de waarde UseUrl=1 niet is ingesteld, downloadt ShellExecuteEx het document naar een lokaal bestand en roept de handler op de lokale kopie aan.
Als de toepassing bijvoorbeeld deze invoerset heeft en een gebruiker met de rechtermuisknop op een bestand klikt dat is opgeslagen op een webserver, wordt het open werkwoord beschikbaar gesteld. Zo niet, dan moet de gebruiker het bestand downloaden en de lokale kopie openen.
De UseUrl-vermelding is van REG_DWORD type en de waarde is 0x1.
In Windows Vista en eerder geeft deze vermelding aan dat de URL moet worden doorgegeven aan de toepassing, samen met een lokale bestandsnaam, wanneer deze wordt aangeroepen via ShellExecuteEx. In Windows 7 geeft dit aan dat de toepassing elke HTTP- of HTTPS-URL kan begrijpen die eraan wordt doorgegeven, zonder dat de cachebestandsnaam ook hoeft op te geven. Deze registersleutel is gekoppeld aan de SupportedProtocols sleutel.

De subsleutel Toepassingen gebruiken

Door het opnemen van registervermeldingen onder de subsleutel HKEY_CLASSES_ROOT\Toepassingen\ApplicationName.exe, kunnen toepassingen de toepassingsspecifieke informatie opgeven die wordt weergegeven in de volgende tabel.

Registervermelding Beschrijving
shell\werkwoord Biedt de werkwoordsmethode voor het aanroepen van de toepassing vanuit OpenWith. Zonder een definitie van een werkwoord die hier is opgegeven, gaat het systeem ervan uit dat de toepassing ondersteuning biedt voor CreateProcessen de bestandsnaam doorgeeft op de opdrachtregel. Deze functionaliteit is van toepassing op alle werkwoordmethoden, waaronder DropTarget, ExecuteCommand en Dynamic Data Exchange (DDE).
DefaultIcon Hiermee kan een toepassing een specifiek pictogram opgeven om de toepassing weer te geven in plaats van het eerste pictogram dat is opgeslagen in het .exe bestand.
FriendlyAppName Biedt een manier om een lokaliseerbare naam weer te geven voor een toepassing in plaats van alleen de versie-informatie die wordt weergegeven, die mogelijk niet kan worden gelokaliseerd. De koppelingsquery ASSOCSTR- leest deze registervermeldingswaarde en valt terug om de FileDescription-naam in de versiegegevens te gebruiken. Als deze naam ontbreekt, wordt de koppelingsquery standaard ingesteld op de weergavenaam van het bestand. Toepassingen moeten ASSOCSTR_FRIENDLYAPPNAME gebruiken om deze informatie op te halen om het juiste gedrag te verkrijgen.
SupportedTypes Geeft een lijst weer van de bestandstypen die door de toepassing worden ondersteund. Hierdoor kan de toepassing worden weergegeven in het trapsgewijs menu van de Openen met dialoogvenster.
NoOpenWith Geeft aan dat er geen toepassing is opgegeven voor het openen van dit bestandstype. Houd er rekening mee dat als een OpenWithProgIDs-subsleutel is ingesteld voor een toepassing op bestandstype en de ProgID-subsleutel zelf geen NoOpenWith-vermelding heeft, die toepassing wordt weergegeven in de lijst met aanbevolen of beschikbare toepassingen, zelfs als de vermelding NoOpenWith is opgegeven. Zie Een toepassing opnemen in het dialoogvenster Openen met en Een toepassing uitsluiten van het dialoogvenster Openen met dialoogvenstervoor meer informatie.
IsHostApp Geeft aan dat het proces een hostproces is, zoals Rundll32.exe of Dllhost.exe, en moet niet worden overwogen voor Start menu vastmaken of opnemen in de MFU-lijst (Most Used). Wanneer deze wordt gestart met een snelkoppeling die een lijst met niet-null-argumenten of een expliciete Application User Model ID's (AppUserModelIDs)bevat, kan het proces worden vastgemaakt (als deze snelkoppeling). Dergelijke snelkoppelingen zijn kandidaten voor opname in de MFU-lijst.
NoStartPage Geeft aan dat het uitvoerbare bestand van de toepassing en snelkoppelingen moeten worden uitgesloten van het menu Start en van het vastmaken of opnemen in de MFU-lijst. Deze vermelding wordt meestal gebruikt om systeemhulpprogramma's, installatieprogramma's en verwijderprogramma's en leesmij-bestanden uit te sluiten.
UseExecutableForTaskbarGroupIcon Zorgt ervoor dat de taakbalk het standaardpictogram van dit uitvoerbare bestand gebruikt als er geen vastgemaakte snelkoppeling voor deze toepassing is en in plaats van het pictogram van het venster dat voor het eerst is aangetroffen.
TaskbarGroupIcon Hiermee geeft u het pictogram dat wordt gebruikt om het taakbalkpictogram te overschrijven. Het vensterpictogram wordt normaal gesproken gebruikt voor de taakbalk. Als u de vermelding TaskbarGroupIcon instelt, wordt het systeem in plaats daarvan het pictogram uit de .exe voor de toepassing gebruikt.

Voorbeelden

Enkele voorbeelden van toepassingsregistraties via de HKEY_CLASSES_ROOT\Toepassingen\ApplicationName.exe subsleutel zijn als volgt. Alle registervermeldingswaarden zijn van REG_SZ type, met uitzondering van DefaultIcon van REG_EXPAND_SZ type.

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

Werkwoorden en andere bestandskoppelingsgegevens registreren

Subsleutels die zijn geregistreerd onder HKEY_CLASSES_ROOT\SystemFileAssociations de Shell in staat stellen het standaardgedrag van kenmerken voor bestandstypen te definiëren en gedeelde bestandskoppelingen in te schakelen. Wanneer gebruikers de standaardtoepassing voor een bestandstype wijzigen, heeft de ProgID van de nieuwe standaardtoepassing prioriteit bij het verstrekken van werkwoorden en andere koppelingsgegevens. Deze prioriteit wordt veroorzaakt door het eerste item in de koppelingsmatrix. Als het standaardprogramma wordt gewijzigd, is de informatie onder de vorige ProgID niet meer beschikbaar.

Als u proactief wilt omgaan met de gevolgen van een wijziging in standaardprogramma's, kunt u HKEY_CLASSES_ROOT\SystemFileAssociations gebruiken om werkwoorden en andere koppelingsgegevens te registreren. Vanwege hun locatie na de ProgID in de koppelingsmatrix, hebben deze registraties een lagere prioriteit. Deze SystemFileAssociationsregistrations zijn stabiel, zelfs wanneer gebruikers de standaardprogramma's wijzigen en een locatie opgeven voor het registreren van secundaire werkwoorden die altijd beschikbaar zijn voor een bepaald bestandstype. Zie Een waargenomen type verderop in dit onderwerp registreren voor een registervoorbeeld.

In het volgende registervoorbeeld ziet u wat er gebeurt wanneer de gebruiker het item Standaardprogramma's in het Configuratiescherm uitvoert om de standaardinstelling voor .mp3 bestanden te wijzigen in App2ProgID. Nadat u de standaardinstelling hebt gewijzigd, is Verb1 niet meer beschikbaar en wordt Verb2 de standaardwaarde.

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

Een waargenomen type registreren

Registerwaarden voor waargenomen typen worden gedefinieerd als subsleutels van de HKEY_CLASSES_ROOT\SystemFileAssociations registersubsleutel. Het waargenomen type tekst wordt bijvoorbeeld als volgt geregistreerd:

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

Het waargenomen type van een bestandstype wordt aangegeven door een PerceivedType-waarde op te geven in de subsleutel van het bestandstype. De waarde PerceivedType is ingesteld op de naam van het waargenomen type dat is geregistreerd onder HKEY_CLASSES_ROOT\SystemFileAssociations registersubsleutel, zoals wordt weergegeven in het vorige registervoorbeeld. Als u .cpp bestanden wilt declareren van het waargenomen type 'tekst', voegt u bijvoorbeeld de volgende registervermelding toe:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

bestandstypen

hoe bestandskoppelingen werken

inhoudsweergave per bestandstype of type

bestandstype

bestandstypehandlers

programmatische id's

waargenomen typen

koppelingsmatrices