Anwendungsregistrierung

In diesem Thema wird erläutert, wie Anwendungen Informationen über sich selbst verfügbar machen können, um bestimmte Szenarien zu aktivieren. Dies umfasst Informationen, die zum Suchen der Anwendung erforderlich sind, die Verben, die die Anwendung unterstützt, und die Arten von Dateien, die eine Anwendung behandeln kann.

Dieses Thema wird wie folgt organisiert:

Hinweis

Anwendungen können auch im Set Program Access and Computer Defaults (SPAD) und Festlegen Ihrer Standardprogramme (SYDP) Systemsteuerungsanwendungen registriert werden. Informationen zur REGISTRIERUNG von SPAD- und SYDP-Anwendungen finden Sie unter Richtlinien für Dateizuordnungen und Standardprogramme undFestlegen von Programmzugriffs- und Computerstandardeinstellungen (SPAD).

Suchen nach einer ausführbaren Anwendung

Wenn die ShellExecuteEx-Funktion mit dem Namen einer ausführbaren Datei im lpFile-Parameter aufgerufen wird, gibt es mehrere Stellen, an denen die Funktion nach der Datei sucht. Es wird empfohlen, Ihre Anwendung im Registrierungsunterschlüssel " App-Pfade " zu registrieren. Dadurch wird verhindert, dass Anwendungen die SystemPFAD-Umgebungsvariable ändern müssen.

Die Datei wird an den folgenden Speicherorten gesucht:

  • Das aktuelle Arbeitsverzeichnis
  • Das Windows Verzeichnis (keine Unterverzeichnisse werden durchsucht).
  • Das Windows\System32-Verzeichnis.
  • Verzeichnisse, die in der PATH-Umgebungsvariable aufgeführt sind.
  • Empfohlen: HKEY_LOCAL_MACHINE\SOFTWAREMicrosoft\\Windows\CurrentVersionApp-Pfade\

Registrieren von Anwendungen

Sowohl die App-Pfadeals auch die Registrierungsunterschlüssel werden verwendet, um das Verhalten des Systems im Auftrag von Anwendungen zu registrieren und zu steuern. Der Unterschlüssel "App-Pfade " ist der bevorzugte Speicherort.

Verwenden des Unterschlüssels "App-Pfade"

In Windows 7 und höher empfehlen wir dringend, Anwendungen pro Benutzer und nicht pro Computer zu installieren. Eine Anwendung, die pro Benutzer installiert ist, kann unter HKEY_CURRENT_USER\SoftwareMicrosoft\\\ Windows CurrentVersionApp\Paths registriert werden. Eine Anwendung, die für alle Benutzer des Computers installiert ist, kann unter HKEY_LOCAL_MACHINE\SoftwareMicrosoft\\\ Windows CurrentVersionApp-Pfaden\ registriert werden.

Die unter App-Pfaden gefundenen Einträge werden hauptsächlich für folgende Zwecke verwendet:

  • Um den ausführbaren Dateinamen einer Anwendung dem vollqualifizierten Pfad dieser Datei zuzuordnen.
  • So können Sie Informationen zur PATH-Umgebungsvariablen auf einer Pro-Anwendung pro Prozess festlegen.

Wenn der Name eines Unterschlüssels von App-Pfaden mit dem Dateinamen übereinstimmt, führt die Shell zwei Aktionen aus:

  • Der Eintrag (Standard) wird als vollqualifizierter Pfad der Datei verwendet.
  • Der Pfadeintrag für diesen Unterschlüssel ist vorab in die PATH-Umgebungsvariable dieses Prozesses eingefügt. Wenn dies nicht erforderlich ist, kann der Pfadwert ausgelassen werden.

Mögliche Probleme, die sich bewusst sind, umfassen:

  • Die Shell beschränkt die Länge einer Befehlszeile auf MAX_PATH * 2 Zeichen. Wenn viele Dateien als Registrierungseinträge aufgeführt sind oder ihre Pfade lang sind, können Dateinamen später in der Liste verloren gehen, da die Befehlszeile abgeschnitten wird.
  • Einige Anwendungen akzeptieren keine mehreren Dateinamen in einer Befehlszeile.
  • Einige Anwendungen, die mehrere Dateinamen akzeptieren, erkennen das Format nicht, in dem die Shell sie bereitstellt. Die Shell stellt die Parameterliste als zitate Zeichenfolge bereit, aber einige Anwendungen benötigen möglicherweise Zeichenfolgen ohne Anführungszeichen.
  • Nicht alle Elemente, die gezogen werden können, sind Teil des Dateisystems; Beispielsweise Drucker. Diese Elemente verfügen nicht über einen standardmäßigen Win32-Pfad, sodass es keine Möglichkeit gibt, einen aussagekräftigen lpParameters-Wert für ShellExecuteEx bereitzustellen.

Durch die Verwendung des DropTarget-Eintrags werden diese potenziellen Probleme vermieden, indem Zugriff auf alle Zwischenablageformate bereitgestellt wird, einschließlich CFSTR_SHELLIDLIST (für lange Dateilisten) und CFSTR_FILECONTENTS (für nicht dateisystembezogene Objekte).

So registrieren und steuern Sie das Verhalten Ihrer Anwendungen mit dem Unterschlüssel "App-Pfade":

  1. Fügen Sie einen Unterschlüssel mit demselben Namen wie Ihre ausführbare Datei zum Unterschlüssel " App-Pfade " hinzu, wie im folgenden Registrierungseintrag dargestellt.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Weitere Informationen zu den Unterschlüsseleinträgen für App-Pfade finden Sie in der folgenden Tabelle.

Registrierungseintrag Details
(Standardwert) Ist der vollqualifizierte Pfad zur Anwendung. Der im Eintrag (Standard) angegebene Anwendungsname kann mit oder ohne .exe Erweiterung angegeben werden. Bei Bedarf fügt die ShellExecuteEx-Funktion die Erweiterung beim Durchsuchen von App-Pfaden unterschlüssel hinzu. Der Eintrag ist der REG_SZ Typ.
DontUseDesktopChangeRouter Ist obligatorisch für Debuggeranwendungen, um Dateidialog-Deadlocks beim Debuggen des Windows Explorer-Prozesses zu vermeiden. Das Festlegen des DontUseDesktopChangeRouter-Eintrags erzeugt jedoch eine geringfügig weniger effiziente Behandlung der Änderungsbenachrichtigungen. Der Eintrag ist der REG_DWORD Typ, und der Wert ist 0x1.
DropTarget Ist ein Klassenbezeichner (CLSID). Der DropTarget-Eintrag enthält die CLSID eines Objekts (normalerweise ein lokaler Server anstelle eines Prozessservers), der IDropTarget implementiert. Wenn das Dropdownziel eine ausführbare Datei ist und kein DropTarget-Wert bereitgestellt wird, konvertiert die Shell die Liste der abgelegten Dateien in einen Befehlszeilenparameter und übergibt sie an ShellExecuteEx über lpParameters.
Pfad Stellt eine Zeichenfolge (in Form einer semikolontrennten Liste von Verzeichnissen) bereit, um an die PATH-Umgebungsvariable anzufügen, wenn eine Anwendung gestartet wird, indem ShellExecuteEx aufgerufen wird. Es ist der vollqualifizierte Pfad zum .exe. Es ist von REG_SZ. In Windows 7 und höher kann der Typ REG_EXPAND_SZ sein und ist häufig REG_EXPAND_SZ %ProgramFiles%.
[! Hinweis]
Zusätzlich zu den einträgen (Standard), Pfad und DropTarget, die von der Shell erkannt werden, kann eine Anwendung auch benutzerdefinierte Werte zum Unterschlüssel der ausführbaren Datei hinzufügen. Wir empfehlen Anwendungsentwicklern, den Unterschlüssel " App-Pfade " zu verwenden, um einen anwendungsspezifischen Pfad bereitzustellen, anstatt Ergänzungen zum globalen Systempfad vorzunehmen.

SupportedProtocols Erstellt eine Zeichenfolge, die die URL-Protokollschemas für einen bestimmten Schlüssel enthält. Dies kann mehrere Registrierungswerte enthalten, um anzugeben, welche Schemas unterstützt werden. Diese Zeichenfolge folgt dem Format von Schema1:schema2. Wenn diese Liste nicht leer ist, wird die Datei der Zeichenfolge hinzugefügt. Dieses Protokoll wird implizit unterstützt, wenn SupportedProtocols definiert ist.
UseUrl Gibt an, dass Ihre Anwendung eine URL (anstelle eines Dateinamens) in der Befehlszeile akzeptieren kann. Anwendungen, die Dokumente direkt aus dem Internet öffnen können, z. B. Webbrowser und Medienplayer, sollten diesen Eintrag festlegen.
Wenn die ShellExecuteEx-Funktion eine Anwendung startet und der UseUrl=1-Wert nicht festgelegt ist, lädt ShellExecuteEx das Dokument in eine lokale Datei herunter und ruft den Handler auf der lokalen Kopie auf.
Wenn die Anwendung beispielsweise über diesen Eintragssatz verfügt und ein Benutzer mit der rechten Maustaste auf eine Datei klickt, die auf einem Webserver gespeichert ist, wird das Verb "Öffnen" verfügbar gemacht. Wenn nicht, muss der Benutzer die Datei herunterladen und die lokale Kopie öffnen.
Der UseUrl-Eintrag ist REG_DWORD Typs, und der Wert ist 0x1 .
In Windows Vista und früher hat dieser Eintrag angegeben, dass die URL zusammen mit einem lokalen Dateinamen an die Anwendung übergeben werden soll, wenn sie über ShellExecuteEx aufgerufen wird. In Windows 7 gibt es an, dass die Anwendung jede http- oder https-URL verstehen kann, die an sie übergeben wird, ohne den Cachedateinamen anzugeben. Dieser Registrierungsschlüssel ist dem SupportedProtocols-Schlüssel zugeordnet.

Verwenden des Unterschlüssels "Anwendungen"

Durch die Einbeziehung von Registrierungseinträgen unter dem HKEY_CLASSES_ROOT\Applications\ApplicationName.exe Unterschlüssel können Anwendungen die anwendungsspezifischen Informationen bereitstellen, die in der folgenden Tabelle dargestellt sind.

Registrierungseintrag BESCHREIBUNG
Shell\verb Stellt die Verbmethode zum Aufrufen der Anwendung aus OpenWith bereit. Ohne hier angegebene Verbdefinition geht das System davon aus, dass die Anwendung CreateProcess unterstützt und den Dateinamen in der Befehlszeile übergibt. Diese Funktionalität gilt für alle Verbmethoden, einschließlich DropTarget, ExecuteCommand und Dynamic Data Exchange (DDE).
DefaultIcon Ermöglicht es einer Anwendung, ein bestimmtes Symbol bereitzustellen, um die Anwendung anstelle des ersten Symbols darzustellen, das in der .exe-Datei gespeichert ist.
FriendlyAppName Bietet eine Möglichkeit, einen lokalisierbaren Namen abzurufen, der für eine Anwendung angezeigt werden soll, anstatt nur die Versionsinformationen anzuzeigen, die möglicherweise nicht lokalisiert werden können. Die Zuordnungsabfrage ASSOCSTR liest diesen Registrierungseintragswert und fällt zurück, um den DateiDescription-Namen in den Versionsinformationen zu verwenden. Wenn dieser Name fehlt, wird die Zuordnungsabfrage standardmäßig auf den Anzeigenamen der Datei festgelegt. Anwendungen sollten ASSOCSTR_FRIENDLYAPPNAME verwenden, um diese Informationen abzurufen, um das richtige Verhalten abzurufen.
SupportedTypes Listet die Dateitypen auf, die die Anwendung unterstützt. Dadurch kann die Anwendung im Kaskadiertenmenü des Dialogfelds "Öffnen" aufgeführt werden.
NoOpenWith Gibt an, dass für das Öffnen dieses Dateityps keine Anwendung angegeben wird. Beachten Sie, dass wenn ein OpenWithProgIDs-Unterschlüssel für eine Anwendung nach Dateityp festgelegt wurde, und der ProgID-Unterschlüssel selbst verfügt nicht auch über einen NoOpenWith-Eintrag, wird diese Anwendung in der Liste der empfohlenen oder verfügbaren Anwendungen angezeigt, auch wenn sie den NoOpenWith-Eintrag angegeben hat. Weitere Informationen finden Sie in der Vorgehensweise, wie Sie eine Anwendung im Dialogfeld "Öffnen mit Öffnen" einschließen und eine Anwendung aus dem Dialogfeld "Öffnen mit öffnen" ausschließen.
IsHostApp Gibt an, dass der Prozess ein Hostprozess ist, z. B. Rundll32.exe oder Dllhost.exe, und sollte nicht für die Anheftung des Startmenüs oder die Aufnahme in die Liste der am häufigsten verwendeten (MFU) berücksichtigt werden. Wenn Sie mit einer Verknüpfung gestartet werden, die eine Nicht-Null-Argumentliste oder eine explizite Anwendungsbenutzermodell-IDs (AppUserModelIDs) enthält, kann der Prozess angeheftet werden (wie diese Verknüpfung). Solche Verknüpfungen sind Kandidaten für die Aufnahme in die MFU-Liste.
NoStartPage Gibt an, dass die ausführbare Anwendung und Tastenkombinationen aus dem Startmenü und aus der Anheftung oder Einbindung in die MFU-Liste ausgeschlossen werden sollen. Dieser Eintrag wird in der Regel verwendet, um Systemtools, Installationsprogramme und Deinstallationsdateien und Readme-Dateien auszuschließen.
UseExecutableForTaskbarGroupIcon Bewirkt, dass die Taskleiste das Standardsymbol dieser ausführbaren Datei verwendet, wenn keine anheftbare Verknüpfung für diese Anwendung vorhanden ist, und anstelle des Symbols des Fensters, das zuerst aufgetreten ist.
TaskbarGroupIcon Gibt das Symbol an, das zum Außerkraftsetzen des Taskleistensymbols verwendet wird. Das Fenstersymbol wird normalerweise für die Taskleiste verwendet. Durch festlegen des TaskbarGroupIcon-Eintrags wird das System stattdessen vom .exe für die Anwendung verwendet.

Beispiele

Einige Beispiele für Anwendungsregistrierungen über die HKEY_CLASSES_ROOT\Applications\ApplicationName.exe Unterschlüssel sind wie folgt. Alle Registrierungseintragswerte sind REG_SZ Typ, mit Ausnahme vonDefaultIcon, das REG_EXPAND_SZ Typ ist.

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

Registrieren von Verben und anderen Dateizuordnungsinformationen

Unterschlüssel, die unter HKEY_CLASSES_ROOT\SystemFileAssociations registriert sind, ermöglichen die Shell, das Standardverhalten von Attributen für Dateitypen zu definieren und freigegebene Dateizuordnungen zu aktivieren. Wenn Benutzer die Standardanwendung für einen Dateityp ändern, hat die ProgID der neuen Standardanwendung Priorität bei der Bereitstellung von Verben und anderen Zuordnungsinformationen. Diese Priorität ist darauf zurückzuführen, dass es der erste Eintrag im Zuordnungsarray ist. Wenn das Standardprogramm geändert wird, sind die Informationen unter der vorherigen ProgID nicht mehr verfügbar.

Um proaktiv mit den Folgen einer Änderung an Standardprogrammen zu umgehen, können Sie HKEY_CLASSES_ROOT\SystemFileAssociations verwenden, um Verben und andere Zuordnungsinformationen zu registrieren. Aufgrund ihrer Position nach der ProgID im Zuordnungsarray sind diese Registrierungen niedriger. Diese SystemFileAssociationsregistrations sind stabil, auch wenn Benutzer die Standardprogramme ändern und einen Speicherort bereitstellen, um sekundäre Verben zu registrieren, die immer für einen bestimmten Dateityp verfügbar sind. Ein Registrierungsbeispiel finden Sie unter Registrieren eines wahrgenommenen Typs später in diesem Thema.

Im folgenden Registrierungsbeispiel wird gezeigt, was geschieht, wenn der Benutzer das Standardprogrammelement in Systemsteuerung ausführt, um die Standardeinstellung für .mp3 Dateien in App2ProgID zu ändern. Nach dem Ändern des Standards ist Verb1 nicht mehr verfügbar, und Verb2 wird zur Standardeinstellung.

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

Registrieren eines wahrgenommenen Typs

Registrierungswerte für wahrgenommene Typen werden als Unterschlüssel des Registrierungsschlüssels HKEY_CLASSES_ROOT\SystemFileAssociations-Registrierungsschlüssel definiert. Beispielsweise wird der wahrgenommene Typtext wie folgt registriert:

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

Der wahrgenommene Typ eines Dateityps wird durch das Einschließen eines PerceivedType-Werts im Unterschlüssel des Dateityps angegeben. Der Wert "PerceivedType" wird auf den Namen des wahrgenommenen Typs festgelegt, der unter HKEY_CLASSES_ROOT\SystemFileAssociations-Registrierungsunterschlüssel registriert ist, wie im vorherigen Registrierungsbeispiel dargestellt. Wenn Sie CPP-Dateien als "Text" deklariert möchten, fügen Sie beispielsweise den folgenden Registrierungseintrag hinzu:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Dateitypen

Funktionsweise von Dateizuordnungen

Inhaltsansicht nach Dateityp oder Art

Dateitypüberprüfung

Dateityphandler

Programmgesteuerte Bezeichner

Wahrgenommene Typen

Zuordnungsarrays