Verwenden der Umleitung von Registrierungszeichenfolgen

Die Speicherung von fest kodierten Zeichenfolgen in der Registrierung ist Teil eines Lokalisierungsmodells aus der Zeit vor Windows Vista. Es wird von MUI nicht unterstützt. Im aktuellen Modell läuft die Benutzeroberfläche des Betriebssystems in sprachspezifischen Ressourcendateien auf einer sprachneutralen Basis. Die Komponenten des Betriebssystems verwenden die Registrierung in einer sprachneutralen Weise.

MUI verwendet nur umgeleitete Registrierungszeichenfolgen, die durch Win32 PE-Ressourcen in der Basis-Sprachressourcendatei definiert sind. Die Umleitung wird separat definiert, z. B. in einer INF-Datei. Diese Art der Speicherung ermöglicht es dem Ressourcenlader, beim Laden der Ressourcenmodule automatisch die richtigen Sprachressourcen auszuwählen.

Hinweis

Dieses Thema bezieht sich nur auf Win32 PE-Ressourcen. Wenn Sie Nicht-Win32 PE-Ressourcen verwenden, müssen Sie bei Bedarf eine angepasste Umleitung für Registrierungszeichenfolgen bereitstellen.

 

Erstellen einer sprachneutralen Ressource

Eine MUI-Anwendung, die unter Windows Vista und höher läuft, verwendet eine sprachneutrale String-Ressource, um den Zugriff auf sprachspezifische Strings zu ermöglichen, die in einer String-Ressourcentabelle gespeichert sind. Der Anwendungscode, der diese Werte aus der Registrierung liest, wird im Abschnitt Laden eines sprachneutralen Registrierungswerts der Suche nach umgeleiteten Zeichenfolgen beschrieben.

Die Daten für einen sprachneutralen Registrierungswert haben das Format „@<PE-path>,-<stringID>[;<comment>]“, wobei:

  • Der PE-Pfad den Pfad der ausführbaren Datei angibt. Sie können den Pfad mithilfe einer Umgebungsvariable, z. B. %ProgramFiles%, angeben, um die Bereitstellung zu unterstützen. Eine Alternative für Ihren Zeichenfolgenverweis besteht darin, die Dateipfadinformationen wegzulassen. In diesem Fall muss Ihre Anwendung über einige Mittel verfügen, z. B. einen anderen Registrierungswert, um ein eigenes Installationsverzeichnis zu kommunizieren.
  • stringID gibt den numerischen Ressourcenbezeichner der relevanten Zeichenfolgenressource an, die genau wie jede andere lokalisierbare Zeichenfolgenressource implementiert wird.
  • Kommentar gibt optionale Informationen zum Debuggen oder Zur Lesbarkeit des Registrierungswerts an. Die Registrierungs-API-Funktionen ignorieren den Kommentar beim Laden der Zeichenfolge.

Hinweis

Die Daten für den Registrierungswert verweisen nicht explizit auf die sprachspezifische Ressourcendatei. Die richtige Datei wird zur Laufzeit basierend auf den aktuellen Spracheinstellungen der Benutzeroberfläche bestimmt.

 

Ein Registrierungswert wird ohne Leerzeichen zwischen „,“ und „-“ eingegeben. Ein richtiger Registrierungswert ist:

shell32.dll,-22912

Ein falscher Registrierungswert ist:

shell32.dll, -22912

Ein Beispiel aus Windows Vista ist der Registrierungswert mit den folgenden Daten:

@%SystemRoot%\system32\input.dll,-5020

Erstellen von Ressourcen für Verknüpfungszeichenfolgen

Wenn die MUI-Anwendung ihren Namen auf der Shell-Benutzeroberfläche anzeigt, wird eine InfoTip-Zeichenfolge für das Anwendungssymbol angezeigt. Sie sollten Zeichenfolgenressourcen für ihren Anwendungsanzeigenamen und die zugehörige InfoTip-Zeichenfolge für jede unterstützte Sprache erstellen. Wenn die Ressourcen bereit sind, kann Ihre Anwendung die Zeichenfolgen verwenden, wie in der Verwendung der Shell-API zum Laden von Verknüpfungszeichenfolgen aus dem Registrierungsabschnitt der Suche nach umgeleiteten Zeichenfolgen beschrieben.

Vorbereiten von Ressourcen für eine mit Windows Installer erstellte Verknüpfung

Wenn Sie Windows Installer (MSI) zum Erstellen einer Verknüpfung verwenden, umfassen Zeichenfolgenressourcen den Anzeigenamen und die Beschreibung der Verknüpfung. In der MSI-Verknüpfungstabelle wird auf die Ressourcen-DLL in den entsprechenden Spalten verwiesen, und die Ressourcenbezeichner für den Anzeigenamen und die Beschreibung der Verknüpfung werden in den entsprechenden Ressourcenbezeichnerspalten verwendet.

Damit die Anwendungsverknüpfung mit der MUI-Ressourcentechnologie ordnungsgemäß funktioniert, beachten Sie beim Vorbereiten der Tastenkombinationen die folgenden Punkte:

  • Verwenden Sie entweder Umgebungsvariablen oder einen relativen Pfad, um die DLL zu registrieren. Sie können @%systemroot%\system32\shell32.dll angeben, solange der Registrierungszeichenfolgentyp REG_EXPAND_SZ ist. Der Zeichenfolgenressourcenbezeichner für „Textdokument“ in Shell32.dll ist 12345.
  • Verwenden Sie keine Leerzeichen um die Symbole „,“ und „-“. Ein richtiges Beispiel ist „shell32.dll,-22912“.
  • Verwenden Sie keinen kurzen Dateinamen. Dieser Nametyp funktioniert nicht mit dem Ressourcenladeprogramm.

Vorbereiten von Ressourcen für eine Verknüpfung im INF-Format

Wenn Sie das INF-Dateiformat zum Erstellen von Verknüpfungszeichenfolgen verwenden, sollte die Ressourcendatei die folgenden Registrierungseinstellungen festlegen. In diesen Anweisungen wird davon ausgegangen, dass die ProfileItems-Syntax der Setup-API verwendet wird.

  1. Ändern Sie den InfoTip-Wert so, dass er auf den Verweis auf die Zeichenfolgenumleitung zeigt, indem Sie den Pfad und den Ressourcenbezeichner verwenden.
  2. Fügen Sie den neuen Wert DisplayResource unter den ProfileItems-Installationsabschnitten hinzu.

Im Folgenden sehen Sie ein Beispiel für das Hinzufügen der Rechneranwendung zum Startmenü:

[CalcInstallItems]
"Name" = %Calc_DESC%
"CmdLine" = 11, calc.exe
"SubDir" = %Access_GROUP%
"WorkingDir" = 11

"InfoTip" = "@%systemroot%\system32\shell32.dll,-22531"

"DisplayResource" = "%systemroot%\system32\shell32.dll",22019

Verwenden Sie die unten gezeigte Syntax, wenn Sie INF verwenden, um dem Startmenü Elemente hinzuzufügen, z. B. einen Access-Gruppenordner. Diese Syntax setzt die Verwendung der [StartMenuItems]-Unterstützung von Setup voraus, ähnlich wie die in Syssetup.inf verwendete Syntax.

[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>

Legen Sie den Wert-InfoTipp auf den Zeichenfolgenverweis „@<path>,-resID“ fest.

Der Anzeigename wird durch die resDLL- und resID-Werte bestimmt. Der resID-Wert gibt den Ressourcenbezeichner für eine Zeichenfolgenressource an, die der sprachneutralen Datei zugeordnet ist. Der resDLL-Wert gibt den Pfad zur sprachneutralen Datei an.

Erstellen von Ressourcen für anzeigefreundliche Dokumenttypnamen

Sie müssen Anzeigenamen und InfoTip-Zeichenfolgen für Ihre Anwendung als Zeichenfolgenressourcen implementieren. Damit benutzerfreundliche Dokumenttypnamen auf die Sprache der Benutzeroberfläche reagieren können, muss die Anwendung die Namen mithilfe des FriendlyTypeName-Werts unter dem Programmbezeichnerschlüssel für den Dateityp registrieren. Der Standardwert für den Programmidentifizierungsschlüssel sollte beibehalten werden, um die Abwärtskompatibilität zu wahren. Informationen über den Zugriff auf die Namen aus Ihrer Anwendung finden Sie unter Abfrage der anzeigefreundlichen Namen von Dokumenttypen im Bereich Registrierung unter Umgeleitete Zeichenfolgen finden.

Die spezifische Arbeit umfasst die folgenden Schritte:

  1. Implementieren Sie den Anzeigenamen und InfoTip-Zeichenfolgen als sprachspezifische Zeichenfolgenressourcen.
  2. Fügen Sie den FriendlyTypeName-Wert unter dem Registrierungsschlüssel für den Dokumenttyp hinzu. Die Daten für den Wert folgen dem Muster „@<path>,-<resID>“, wobei der Pfad die ausführbare Datei angibt und resID der Ressourcenbezeichner einer lokalisierbaren Zeichenfolgenressource ist, die dieser ausführbaren Datei zugeordnet ist.
  3. Geben Sie den InfoTip-Registrierungswert gemäß dem Format „@<path>,-<resID>“ an.

Das folgende Beispiel zeigt die Registrierungseinstellungen für eine .txt-Datei:

HKCR\.txt
@="txtfile"
"Content Type"="text/plain"

HKCR\txtfile
@="Text Document"

"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"

"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"

Bereitstellen von Ressourcen für Shell-Verb-Aktionszeichenfolgen

Aktionszeichenfolgen für bestimmte Verben, z. B. „öffnen“ und „bearbeiten“, werden im Popupmenü angezeigt, wenn der Benutzer mit der rechten Maustaste auf eine Datei im Windows-Explorer klickt. Ihre Anwendung muss keine Zeichenfolgen für allgemeine Shellverben angeben, da die Shell über eigene MUI-fähige Standardwerte für diese Verben verfügt. Sie sollten jedoch lokalisierbare Zeichenfolgenressourcen für Zeichenfolgen bereitstellen, die ungewöhnliche Verben darstellen.

Unter Windows XP-Betriebssystemen werden Zeichenfolgen für Shellverben in der Registrierung mithilfe der folgenden Syntax gerendert, wobei das Verb den tatsächlichen Verbnamen angibt:

HKCR\<progid>\shell\<verb>
@ = <friendly-name>

Hier sehen Sie ein Beispiel:

HKCR\Sample.app\shell\Disc
@ = "Disconnect"

Unter Windows XP und höher können Sie eine Dereferenzierungsebene verwenden, um eine Aktionszeichenfolge abhängig von der Sprache der Benutzeroberfläche zu machen. Diese Betriebssysteme unterstützen einen MUIVerb-Wert für die Definition einer MUI-kompatiblen Zeichenfolge. Hier ist ein Beispiel für einen Registrierungseintrag für ein ungewöhnliches Verb:

HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"

Ihre MUI-Anwendung sollte auch in der Lage sein, den alten Standardwert als lokalisierbare Zeichenfolge zu registrieren, wie unten dargestellt:

HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"

Hinweis

Es wird nicht empfohlen, den alten Standardwert zu registrieren, da er unter Windows XP und höher eine andere Einrichtung erfordert als unter früheren Betriebssystemen.

 

Erstellen von Ressourcen für Verb-, Protokoll- und AuxUserType-Zeichenfolgen

Sie sollten lokalisierbare Zeichenfolgenressourcen für Verb-, Protokoll- und AuxUserType-Zeichenfolgen erstellen. Verwenden Sie die folgenden Registrierungseinstellungen:

HKCR\CLSID\{<Your_CLSID>}\Verb\<number> @="<Your Verb>, <menu_flag>, <verb_flag>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...

HKCR\CLSID\{<Your_CLSID>}\AuxUserType\<number>
@="<Your Short Name>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID1"
...

HKCR\<Your_Name>\protocol\StdFileEditing\verb\<number>
@="<Your Verb>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...

Der für LocalizedString angegebene Wert enthält oder ersetzt den Wert für Ihr Verb und nicht die beiden Flagwerte.

Hier ist eine Zusammenfassung, mit der Sie die richtigen Registrierungseinstellungen sicherstellen können:

  • Wenn CLSID über einen HKCR\CLSID\{clsid}\Insertable key verfügt, definieren Sie den Standard-CLSID-Wert mithilfe von HKCR\CLSID\{clsid}\LocalizedString.
  • Wenn CLSID über einen oder mehrere Unterschlüssel unter HKCR\CLSID\{clsid}\Verb verfügt, definieren Sie jede einzelne Verbzeichenfolge mithilfe von HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
  • Wenn CLSID über einen oder mehrere Unterschlüssel unter HKCR\{progid}\Protocol\Stdfileediting\Verb verfügt, definieren Sie jede einzelne Verbzeichenfolge mithilfe von HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
  • Wenn CLSID einen oder mehrere aufgelistete AuxUserType-Unterschlüssel unter HKCR\CLSID\{clsid}\AuxUserType enthält, definieren Sie jeden AuxUserType-Eintrag mithilfe von HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.

Erstellen einer Ressource für das Deinstallationsprogramm

Um das Deinstallationsprogramm für die Anwendung zu registrieren, können Sie Registrierungswerte im eindeutigen Bezeichner-Unterschlüssel für die Anwendung unter dem Registrierungsschlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall erstellen. Festzulegende Werte sind: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.

Hinweis

Um die MUI-Technologie für jeden Wert zu aktivieren, können Sie „_Localized“ an den Wertnamen anfügen.

 

Betriebssystemkomponenten müssen einen Wert für DisplayName_Localized auf MUI-spezifische Weise bereitstellen. Sie sollten den Anzeigenamen in einer DLL, z. B. Res.dll, als Zeichenfolgenressource platzieren, wobei davon ausgegangen wird, dass der Bezeichner 1245 ist. Anschließend kann die Anwendung den Anzeigenamen als DisplayName_Localized mit dem Wert „@\res.DLL,-1245“ registrieren. Alle anderen Registrierungseinstellungen sollten beibehalten werden, wie sie sind, einschließlich des ursprünglichen Werts für DisplayName.

Erstellen von Ressourcen für Soundereignisse

Windows verknüpft bestimmte Ereignisse mit Sounddateien, z. B. eine Benachrichtigung über eine neue E-Mail oder einen kritischen Batteriealarm. Die Ereignisnamen müssen von der Benutzeroberfläche angezeigt werden und Globalisierung unterstützen. Daher sollten Sie eine lokalisierbare Zeichenfolgenressource für die Beschreibung jeder Ereignisbeschreibung implementieren. Fügen Sie zusätzlich zum hartcodierten Standardwert einen neuen Registrierungswert für jeden Ereignisnamen hinzu.

Gehen Sie wie folgt vor, um ein Soundereignis zu aktivieren:

  1. Implementieren Sie die Beschreibung als lokalisierbare Zeichenfolgenressource.
  2. Fügen Sie zusätzlich zum hartcodierten Standardwert einen neuen Registrierungswert für jede Anzeige hinzu. Das zugeordnete Registrierungslayout wird unten angezeigt:
HKCR\AppEvents\EventLabels
<event_name>
    (Default) REG_SZ "<description>"
    DispFileName REG_EXPAND_SZ "@<path>,-<resID>"

Wenn die Shell den Wert von DispFileName nicht finden oder abrufen kann, verwendet sie die Standardbeschreibung.

Erstellen von Ressourcen für Tastaturlayoutzeichenfolgen

Wenn Ihre Anwendung ein Tastaturlayout implementiert, ist eine lokalisierbare Zeichenfolgenressource für den Namen des Layouts für die Bildschirmanzeige erforderlich, z. B. in Listen mit Tastaturlayouts. Jedes Tastaturlayout verfügt über einen Registrierungsschlüssel unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.

Zu den Werten für diesen Schlüssel gehören Layout Text, ein von Menschen lesbarer Name für die Abwärtskompatibilität, und Layout Display Name. Die für Layout Display Name gelieferten Daten sollten eine String-Referenz des Formulars @<path>,-resID sein, die sich auf eine lokalisierbare String-Ressource bezieht, die mit dem Tastaturlayout verbunden ist.

Hier ist ein Beispiel für eine Registrierungseinstellung für das spanische Tastaturlayout:

HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
    Layout Text REG_SZ "Spanish"
    Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"

Darstellen des häufig verwendeten OLE-Dialogfelds Objekt einfügen

Sie können den Anzeigenamen eines OLE-einfügbaren Objekts als lokalisierbare Zeichenfolgenressource implementieren, die mit dem Code verknüpft ist, der dieses Objekt implementiert. Das Dialogfeld OLE-Objekt einfügen ruft einen Anzeigenamen aus dem Registrierungsschlüssel HKCR\CLSID\{<GUID>} ab, wobei GUID den Klassenbezeichner eines einfügbaren OLE-Objekts identifiziert. Windows Vista und höher implementiert diesen Objekttyp lokalisierbar mithilfe eines MUI-kompatiblen Anzeigenamens, der die Anpassung an die Sprache der Benutzeroberfläche ermöglicht. Im Gegensatz dazu implementieren Pre-Windows Vista-Betriebssysteme den Anzeigenamen für diesen Objekttyp unter Verwendung des Standardwerts des entsprechenden Registrierungsschlüssels. In der Regel ist dieser Name entweder ein englischer Name (Nordamerika) oder ein Name in der Standardsprache der Benutzeroberfläche des Systems.

Hinweis

Nicht alle Objekte, die Unterschlüsseln des Registrierungsschlüssels entsprechen, können eingefügt werden.

 

Der Standardwert des HKCR\CLSID\{<GUID>}-Schlüssels sollte einen lesbaren Namen für die Abwärtskompatibilität beibehalten. Er sollte jedoch auch den LocalizedString-Wert im Format „@<path>,-ResID“ definieren, in dem der Pfad die ausführbare Datei identifiziert, die das Objekt implementiert. Der ResID-Wert gibt den Ressourcenbezeichner der lokalisierbaren Zeichenfolge für den Anzeigenamen an.

Das Registrierungsskript für das einfügbare Media Clip-Objekt enthält beispielsweise die folgenden Zeilen:

HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"

Die erste Zeile bietet Abwärtskompatibilität, indem eine einfache Textzeichenfolge in der Registrierung als Standardanzeigename platziert wird. Die zweite Zeile bietet Zugriff auf den MUI-kompatiblen Anzeigenamen. Sie gibt den Zeichenfolgenbezeichner an, der in Mplay32.exe gespeichert ist. Die Zeichenfolge mit dem Bezeichner 9217 in Mplay32.exe kann mit Zeichenfolgenressourcenwerten für eine beliebige Anzahl von Sprachen verknüpft werden. Der englische Name (Nordamerika) lautet „Media Clip“.

Erstellen von Zeichenfolgenressourcen für Microsoft Management Console-Snap-Ins

Sie sollten eine lokalisierbare Zeichenfolgenressource für jedes Microsoft Management Console (MMC)-Snap-In erstellen, das von Ihrer MUI-Anwendung verwendet wird. Da ein Snap-In Teil einer Konsole ist, verfügt es über eine Benutzeroberfläche und muss globalisiert werden, um in mehr als einer Sprache zu arbeiten.

Für MMC-Snap-Ins gelten größtenteils dieselben Globalisierungs- und Lokalisierungsprobleme wie für die MUI-Anwendung selbst. Für die Anzeige muss ein MMC-Snap-In seinem Namen in der Registrierung entsprechen. Der Registrierungseintrag sollte sowohl einen indirekten Verweis auf eine lokalisierbare Zeichenfolgenressource als auch eine Literalzeichenfolge enthalten, um die Abwärtskompatibilität zu gewährleisten.

Jedes MMC-Snap-In verfügt über einen Registrierungsschlüssel unter HKEY_LOCAL_MACHINE\Software\Microsoft\MMC\SnapIns. Zu den Werten für diesen Schlüssel gehören NameString, der einen lesbaren Namen für die Abwärtskompatibilität angibt, und NameStringIndirect, der einen indirekten Verweis auf eine lokalisierbare Zeichenfolgenressource angibt. Für NameStringIndirect sollten Sie einen Zeichenfolgenverweis des Formulars „@<path>,-resID“ angeben, der eine lokalisierbare Zeichenfolgenressource darstellt.

Sie können beispielsweise die folgende Einstellung für Mymmc.dll festlegen, wobei 12345 der Bezeichner der entsprechenden Zeichenfolgenressource ist, die den lokalisierbaren Namen des Snap-Ins enthält:

NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345

Einige Snap-Ins registrieren andere Registrierungszeichenfolgenwerte, die MMC nicht aus der Registrierung liest. Weitere Informationen zur Verwendung dieser Werte finden Sie unter Registrieren von nicht aus der Registrierung gelesenen Snap-In-Zeichenfolgen der Microsoft Management Console unter Umgeleitete Zeichenfolgen suchen.

Erstellen von Zeichenfolgenressourcen für einen Windows-Dienst

Obwohl ein Windows-Dienst in der Regel nur wenig oder gar keine Benutzeroberfläche aufweist, muss er einen MUI-kompatiblen Namen anzeigen und in der Regel eine MUI-kompatible sprachspezifische Beschreibung bereitstellen. Der Registrierungsschlüssel, der einen Windows-Dienst beschreibt, unterstützt nur den DisplayName-Wert für den Dienstnamen und den Beschreibungswert für die Dienstbeschreibung.

Die Einstellungen für den Windows-Dienst werden von der Anwendung aus vorgenommen, wie unter Festlegen des Anzeigenamens und der Beschreibung für einen Windows-Dienst über die Registrierung in Umgeleitete Zeichenfolgen suchen beschrieben. Wenn Ihre Anwendung die Registrierungswerte für die Benutzeroberfläche des Dienstes nicht festlegt, bleiben die Werte in der Registrierung auf Englisch eingestellt, auch wenn die Benutzeroberfläche in einer anderen Sprache vorliegt.

Vorbereiten von Ressourcen

Umgeleitete Zeichenfolgen suchen