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:
- Suchen einer ausführbaren Anwendung
- Registrieren von Anwendungen
- Registrieren von Verben und anderen Dateizuordnungsinformationen
- Registrieren eines wahrgenommenen Typs
- Verwandte Themen
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":
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
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