Anwendungsregistrierung

In diesem Thema wird erläutert, wie Anwendungen Informationen über sich selbst verfügbar machen können, die für bestimmte Szenarien erforderlich sind. Dies umfasst Informationen, die zum Suchen der Anwendung erforderlich sind, die von der Anwendung unterstützten Verben und die Dateitypen, die eine Anwendung verarbeiten kann.

Dieses Thema ist wie folgt organisiert:

Hinweis

Anwendungen können auch in den Systemsteuerungsanwendungen Set Program Access and Computer Defaults (SPAD) und Set Your Default Programs (SYDP) registriert werden. Informationen zur REGISTRIERUNG von SPAD- und SYDP-Anwendungen finden Sie unter Richtlinien für Dateizuordnungen und Standardprogramme und Festlegen von Programmzugriff und Computerstandard (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 vermieden, dass Anwendungen die Path-Umgebungsvariable des Systems ändern müssen.

Die Datei wird an den folgenden Speicherorten gesucht:

  • Das aktuelle Arbeitsverzeichnis
  • Nur das Windows-Verzeichnis (keine Unterverzeichnisse werden durchsucht).
  • Das Verzeichnis Windows\System32 .
  • Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind.
  • Empfohlen: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App-Pfade

Registrieren von Anwendungen

Sowohl die Unterschlüssel App-Pfade als auch Anwendungsregistrierungen 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 wird dringend empfohlen, Anwendungen pro Benutzer und nicht pro Computer zu installieren. Eine Anwendung, die für pro Benutzer installiert wird, kann unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths registriert werden. Eine Anwendung, die für alle Benutzer des Computers installiert ist, kann unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths registriert werden.

Die unter App-Pfade gefundenen Einträge werden in erster Linie für die folgenden Zwecke verwendet:

  • Zuordnen des ausführbaren Dateinamens einer Anwendung zum vollqualifizierten Pfad dieser Datei.
  • Informationen vorab an die PATH-Umgebungsvariable pro Anwendung und Prozess zu übergeben.

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 wird der PATH-Umgebungsvariablen dieses Prozesses vorangestellt. Wenn dies nicht erforderlich ist, kann der Path-Wert weggelassen werden.

Mögliche Probleme, die sie beachten müssen, sind:

  • Die Shell beschränkt die Länge einer Befehlszeile auf MAX_PATH * 2 Zeichen. Wenn viele Dateien als Registrierungseinträge aufgeführt sind oder deren Pfade lang sind, können dateinamen später in der Liste verloren gehen, wenn die Befehlszeile abgeschnitten wird.
  • Einige Anwendungen akzeptieren nicht mehrere Dateinamen in einer Befehlszeile.
  • Einige Anwendungen, die mehrere Dateinamen akzeptieren, erkennen nicht das Format, in dem sie von der Shell bereitgestellt werden. Die Shell stellt die Parameterliste als Zeichenfolge in Anführungszeichen bereit, aber einige Anwendungen erfordern möglicherweise Zeichenfolgen ohne Anführungszeichen.
  • Nicht alle Elemente, die gezogen werden können, sind Teil des Dateisystems. z. B. Drucker. Diese Elemente verfügen nicht über einen Win32-Standardpfad, daher gibt es keine Möglichkeit, shellExecuteEx einen aussagekräftigen lpParameters-Wert bereitzustellen.

Die Verwendung des DropTarget-Eintrags vermeidet diese potenziellen Probleme, indem Zugriff auf alle Zwischenablageformate bereitgestellt wird, einschließlich CFSTR_SHELLIDLIST (für lange Dateilisten) und CFSTR_FILECONTENTS (für Nicht-Dateisystemobjekte).

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

  1. Fügen Sie dem Unterschlüssel App-Pfade einen Unterschlüssel mit demselben Namen wie ihre ausführbare Datei hinzu, wie im folgenden Registrierungseintrag gezeigt.

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

Registrierungseintrag Details
(Standardwert) 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 des Unterschlüssels App-Pfade hinzu. Der Eintrag ist vom typ REG_SZ .
DontUseDesktopChangeRouter Ist obligatorisch für Debuggeranwendungen, um Dateidialog-Deadlocks beim Debuggen des Windows-Explorer-Prozesses zu vermeiden. Das Festlegen des Eintrags DontUseDesktopChangeRouter führt jedoch zu einer etwas weniger effizienten Behandlung der Änderungsbenachrichtigungen. Der Eintrag hat den REG_DWORD Typ, und der Wert ist 0x1.
DropTarget Ist ein Klassenbezeichner (CLSID). Der DropTarget-Eintrag enthält die CLSID eines Objekts (in der Regel ein lokaler Server anstelle eines prozessinternen Servers), das IDropTarget implementiert. Wenn das Ablageziel eine ausführbare Datei ist und kein DropTarget-Wert angegeben wird, konvertiert die Shell standardmäßig die Liste der gelöschten Dateien in einen Befehlszeilenparameter und übergibt sie über lpParameters an ShellExecuteEx.
Pfad Stellt eine Zeichenfolge (in Form einer durch Semikolons getrennten Liste von Verzeichnissen) bereit, die an die PATH-Umgebungsvariable angefügt werden soll, wenn eine Anwendung durch Aufrufen von ShellExecuteEx gestartet wird. Dies 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 wird häufig REG_EXPAND_SZ %ProgramFiles% verwendet. Hinweis: Zusätzlich zu den Einträgen (Standard), Path und DropTarget, die von der Shell erkannt werden, kann eine Anwendung dem Unterschlüssel App-Pfade ihrer ausführbaren Datei auch benutzerdefinierte Werte hinzufügen. Wir empfehlen Anwendungsentwicklern, den Unterschlüssel App-Pfade zu verwenden, um einen anwendungsspezifischen Pfad bereitzustellen, anstatt den globalen Systempfad zu ergänzen.
SupportedProtocols Erstellt eine Zeichenfolge, die die URL-Protokollschemas für einen bestimmten Schlüssel enthält. Dieser kann mehrere Registrierungswerte enthalten, um anzugeben, welche Schemas unterstützt werden. Diese Zeichenfolge folgt dem Format schema1:scheme2. Wenn diese Liste nicht leer ist, wird file: 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 Media Player, sollten diesen Eintrag festlegen.
Wenn die ShellExecuteEx-Funktion eine Anwendung startet und der Wert UseUrl=1 nicht festgelegt ist, lädt ShellExecuteEx das Dokument in eine lokale Datei herunter und ruft den Handler für die lokale Kopie auf.
Wenn für die Anwendung beispielsweise dieser Eintrag festgelegt ist und ein Benutzer mit der rechten Maustaste auf eine Datei klickt, die auf einem Webserver gespeichert ist, wird das Verb Öffnen verfügbar gemacht. Andernfalls muss der Benutzer die Datei herunterladen und die lokale Kopie öffnen.
Der UseUrl-Eintrag ist vom Typ REG_DWORD , und der Wert ist 0x1.
In Windows Vista und früheren Versionen gibt dieser Eintrag an, dass die URL zusammen mit einem lokalen Dateinamen an die Anwendung übergeben werden soll, wenn sie über ShellExecuteEx aufgerufen wird. In Windows 7 gibt dies an, dass die Anwendung jede http- oder HTTPS-URL verstehen kann, die an sie übergeben wird, ohne auch den Cachedateinamen angeben zu müssen. Dieser Registrierungsschlüssel ist dem Schlüssel SupportedProtocols zugeordnet.

Verwenden des Unterschlüssels "Anwendungen"

Durch die Aufnahme von Registrierungseinträgen in den unterschlüssel HKEY_CLASSES_ROOT\Anwendungen\ApplicationName.exe können Anwendungen die anwendungsspezifischen Informationen bereitstellen, die in der folgenden Tabelle dargestellt sind.

Registrierungseintrag BESCHREIBUNG
shell\verb Stellt die Verb-Methode zum Aufrufen der Anwendung aus OpenWith bereit. Ohne hier angegebene Verbdefinition geht das System davon aus, dass die Anwendung CreateProcess unterstützt, und übergibt den Dateinamen in der Befehlszeile. 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, das die Anwendung anstelle des ersten In der .exe-Datei gespeicherten Symbols darstellt.
FriendlyAppName Bietet eine Möglichkeit, einen lokalisierbaren Namen für eine Anwendung anstelle der angezeigten Versionsinformationen abzurufen, die möglicherweise nicht lokalisierbar sind. Die Zuordnungsabfrage ASSOCSTR liest diesen Registrierungseintragswert und greift zurück, um den FileDescription-Namen in den Versionsinformationen zu verwenden. Wenn dieser Name fehlt, wird für die Zuordnungsabfrage standardmäßig der Anzeigename der Datei verwendet. Anwendungen sollten ASSOCSTR_FRIENDLYAPPNAME verwenden, um diese Informationen abzurufen, um das richtige Verhalten zu erhalten.
SupportedTypes Listet die Dateitypen auf, die von der Anwendung unterstützt werden. Dadurch kann die Anwendung im Kaskadenmenü des Dialogfelds Öffnen mit aufgeführt werden.
NoOpenWith Gibt an, dass keine Anwendung zum Öffnen dieses Dateityps angegeben ist. Beachten Sie, dass, wenn ein OpenWithProgIDs-Unterschlüssel für eine Anwendung nach Dateityp festgelegt wurde und der ProgID-Unterschlüssel selbst nicht auch über einen NoOpenWith-Eintrag verfügt, diese Anwendung in der Liste der empfohlenen oder verfügbaren Anwendungen angezeigt wird, auch wenn sie den Eintrag NoOpenWith angegeben hat. Weitere Informationen finden Sie unter Vorgehensweise: Einschließen einer Anwendung in das Dialogfeld Öffnen mit und Ausschließen einer Anwendung aus dem Dialogfeld Öffnen mit.
IsHostApp Gibt an, dass es sich bei dem Prozess um einen Hostprozess handelt, z. B. Rundll32.exe oder Dllhost.exe, und er sollte nicht für das Anheften des Startmenüs oder die Aufnahme in die MFU-Liste (Most Frequently Used) berücksichtigt werden. Beim Starten mit einer Verknüpfung, die eine Argumentliste ungleich NULL 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 vom Anheften oder Einschließen in die MFU-Liste ausgeschlossen werden sollen. Dieser Eintrag wird in der Regel verwendet, um Systemtools, Installationsprogramme und Deinstallationsprogramme sowie 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 gefunden wurde.
TaskleisteGroupIcon Gibt das Symbol an, das zum Überschreiben des Taskleistensymbols verwendet wird. Das Fenstersymbol wird normalerweise für die Taskleiste verwendet. Wenn Sie den TaskbarGroupIcon-Eintrag festlegen, verwendet das System stattdessen das Symbol aus dem .exe für die Anwendung.

Beispiele

Einige Beispiele für Anwendungsregistrierungen über den HKEY_CLASSES_ROOT\Applications\ApplicationName.exe Unterschlüssel sind wie folgt. Alle Registrierungseintragswerte sind vom Typ REG_SZ , mit Ausnahme von DefaultIcon , das REG_EXPAND_SZ Typs aufweist.

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 es der 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 beim Bereitstellen von Verben und anderen Zuordnungsinformationen. Diese Priorität ist darauf zurückzuführen, dass es sich um den ersten Eintrag im Zuordnungsarray handelt. 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 umzugehen, können Sie HKEY_CLASSES_ROOT\SystemFileAssociations verwenden, um Verben und andere Zuordnungsinformationen zu registrieren. Aufgrund ihrer Position nach der ProgID im Zuordnungsarray haben diese Registrierungen eine niedrigere Priorität. Diese SystemFileAssociationsregistrierungen sind auch dann stabil, wenn Benutzer die Standardprogramme ändern, und stellen einen Speicherort zum Registrieren sekundärer Verben bereit, der immer für einen bestimmten Dateityp verfügbar ist. Ein Registrierungsbeispiel finden Sie weiter unten in diesem Thema unter Registrieren eines wahrgenommenen Typs .

Das folgende Registrierungsbeispiel zeigt, 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 Standardwerts 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 HKEY_CLASSES_ROOT\SystemFileAssociations-Registrierungsunterschlüssels 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 Einfügen eines PerceivedType-Werts in den Unterschlüssel des Dateityps angegeben. Der Wert PerceivedType wird auf den Namen des wahrgenommenen Typs festgelegt, der unter HKEY_CLASSES_ROOT\ RegistrierungsunterschlüsselSystemFileAssociations registriert ist, wie im vorherigen Registrierungsbeispiel gezeigt. Fügen Sie z. B. den folgenden Registrierungseintrag hinzu, um CPP-Dateien als vom Typ "text" zu deklarieren:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Dateitypen

Funktionsweise von Dateizuordnungen

Inhaltsansicht nach Dateityp oder -art

Dateitypüberprüfung

Dateityphandler

Programmgesteuerte Bezeichner

Wahrgenommene Typen

Zuordnungsarrays