Freigeben über


Anwendungsregistrierung

In diesem Thema wird erläutert, wie Anwendungen Informationen über sich selbst verfügbar machen können, um bestimmte Szenarien zu ermöglichen. Dazu gehören Informationen, die zum Suchen der Anwendung, der von der Anwendung unterstützten Verben und der Dateitypen erforderlich sind, die von einer Anwendung behandelt werden können.

Dieses Thema ist wie folgt organisiert:

Anmerkung

Anwendungen können auch in den SYDP-Systemsteuerungsanwendungen (Set Program Access and Computer Defaults) und Set Your Default Programs (SYDP) registriert werden. Informationen zur REGISTRIERUNG von SPAD- und SYDP-Anwendungen finden Sie unter Richtlinien für Dateizuordnungen und Standardprogrammeund Festlegen von Programmzugriffs- und Computerstandardeinstellungen (SPAD).

Suchen einer ausführbaren Anwendung

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

Die Datei wird an den folgenden Speicherorten gesucht:

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

Registrieren von Anwendungen

Sowohl die App-Pfade als auch Anwendungen Registrierungsunterschlüssel werden verwendet, um das Verhalten des Systems im Auftrag von Anwendungen zu registrieren und zu steuern. Der App-Pfade Unterschlüssel 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 pro Benutzer installiert wird, kann unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Pathsregistriert werden. Eine Anwendung, die für alle Benutzer des Computers installiert ist, kann unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Pathsregistriert werden.

Die Einträge unter App-Pfade werden hauptsächlich für die folgenden Zwecke verwendet:

  • So ordnen Sie den dateinamen der ausführbaren Datei einer Anwendung dem vollqualifizierten Pfad dieser Datei zu.
  • Zum Vorabstiften von Informationen zur PATH-Umgebungsvariablen pro Anwendung pro Prozess.

Wenn der Name eines Unterschlüssels App-Pfade dem Dateinamen entspricht, 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 Pfadwert weggelassen werden.

Mögliche Probleme, die Sie berücksichtigen müssen, umfassen:

  • Die Shell begrenzt 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, 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 die Shell sie bereitstellt. Die Shell stellt die Parameterliste als Zeichenfolge in Anführungszeichen bereit, einige Anwendungen erfordern jedoch 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, daher gibt es keine Möglichkeit, einen aussagekräftigen lpParameters Wert für ShellExecuteExbereitzustellen.

Die Verwendung des DropTarget-Eintrags vermeidet diese potenziellen Probleme, indem der 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 einen Unterschlüssel mit demselben Namen wie die ausführbare Datei zum App-Pfade Unterschlüssel 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. Details zu den App-Pfaden Unterschlüsseleinträgen finden Sie in der folgenden Tabelle.

Registrierungseintrag Details
(Standard) Ist der vollqualifizierte Pfad zur Anwendung. Der im Eintrag (Standard) angegebene Anwendungsname kann mit oder ohne seine .exe Erweiterung angegeben werden. Bei Bedarf fügt die funktion ShellExecuteEx die Erweiterung beim Durchsuchen App-Pfade Unterschlüssel 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 DontUseDesktopChangeRouter-Eintrags erzeugt jedoch eine etwas weniger effiziente Behandlung der Änderungsbenachrichtigungen. Der Eintrag ist vom typ REG_DWORD und der Wert 0x1.
DropTarget Ist ein Klassenbezeichner (CLSID). Der DropTarget-Eintrag enthält die CLSID eines Objekts (in der Regel ein lokaler Server anstelle eines In-Process-Servers), der IDropTargetimplementiert. Wenn das Drop-Ziel eine ausführbare Datei ist und kein DropTarget-Wert angegeben wird, konvertiert die Shell die Liste der abgelegten Dateien in einen Befehlszeilenparameter und übergibt sie über lpParametersan 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 gestartet wird, indem ShellExecuteExaufgerufen wird. Es ist der vollqualifizierte Pfad zum .exe. Es ist von REG_SZ. In Windows 7 und höherkann der Typ REG_EXPAND_SZwerden und ist häufig REG_EXPAND_SZ %ProgramFiles%. Hinweis: Zusätzlich zu den einträgen (Standard), Path und DropTarget, die von der Shell erkannt werden, kann eine Anwendung auch benutzerdefinierte Werte zu den App-Pfaden Unterschlüssel der ausführbaren Datei hinzufügen. Wir empfehlen Anwendungsentwicklern, den App-Pfade Unterschlüssel 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 schema1:scheme2. Wenn diese Liste nicht leer ist, Datei: wird 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 UseUrl=1-Wert nicht festgelegt ist, lädt ShellExecuteEx das Dokument in eine lokale Datei herunter und ruft den Handler für die lokale Kopie auf.
Wenn die Anwendung z. B. diesen Eintrag festgelegt hat 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 weist REG_DWORD Typ auf, und der Wert ist 0x1.
In Windows Vista und früheren Versionen 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 weist sie darauf hin, 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 SupportedProtocols Schlüssel zugeordnet.

Verwenden des Unterschlüssels "Anwendungen"

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

Registrierungseintrag Beschreibung
shell\verb Stellt die Verbmethode zum Aufrufen der Anwendung aus OpenWith bereit. Ohne eine hier angegebene Verbdefinition geht das System davon aus, dass die Anwendung CreateProcessunterstü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 kann, anstatt nur die Versionsinformationen anzuzeigen, die möglicherweise nicht lokalisierbar sind. Die Zuordnungsabfrage ASSOCSTR liest diesen Registrierungseintragswert und greift auf die Verwendung des FileDescription-Namens in den Versionsinformationen zurück. 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 zu erhalten.
SupportedTypes Listet die Dateitypen auf, die von der Anwendung unterstützt werden. Auf diese Weise kann die Anwendung im Kaskadenmenü des Dialogfelds Öffnen mit aufgelistet 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 keinen NoOpenWith-Eintrag enthält, wird diese Anwendung auch dann in der Liste der empfohlenen oder verfügbaren Anwendungen angezeigt, wenn sie den NoOpenWith-Eintrag angegeben hat. Weitere Informationen finden Sie unter How to Include an Application in the Open With Dialog Box and How to exclude an Application from the Open with Dialog Box.
IsHostApp Gibt an, dass es sich bei dem Prozess um einen Hostprozess handelt, z. B. Rundll32.exe oder Dllhost.exe, und sollte nicht für Start menü anheften oder in die Liste der am häufigsten verwendeten Menüs (MFU) berücksichtigt werden. Beim Starten mit einer Verknüpfung, die eine Nicht-Null-Argumentliste oder eine explizite Anwendungsbenutzermodell-IDs (AppUserModelIDs)enthält, kann der Prozess angeheftet werden (als 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 Verknüpfungen aus dem Startmenü und von der Anheftung oder Aufnahme 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 nicht das Symbol des Fensters, das zuerst gefunden wurde.
TaskbarGroupIcon 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 Unterschlüssel "HKEY_CLASSES_ROOT\Anwendungen\ApplicationName.exe" sind wie folgt. Alle Registrierungseintragswerte weisen REG_SZ Typ auf, mit Ausnahme DefaultIcon-REG_EXPAND_SZ Typs.

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, die Shell aktivieren, um 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 Vorrang beim Bereitstellen von Verben und anderen Zuordnungsinformationen. Diese Priorität liegt daran, 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 umzugehen, 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 zum Registrieren sekundärer Verben bereitstellen, die immer für einen bestimmten Dateityp verfügbar sind. Ein Registrierungsbeispiel finden Sie unter Registrieren eines wahrgenommenen Typs weiter unten in diesem Thema.

Das folgende Registrierungsbeispiel zeigt, was passiert, wenn der Benutzer das Standardprogramme Element in der 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 Typ Text 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 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 gezeigt. Um .cpp Dateien als "text" wahrgenommen zu deklarieren, fügen Sie z. B. den folgenden Registrierungseintrag hinzu:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Dateitypen

Funktionsweise von Dateizuordnungen

Inhaltsansicht nach Dateityp oder Art

Dateitypüberprüfung

Dateityphandler

Programmatic Identifiers

wahrgenommenen Typen

Zuordnungsarrays