Freigeben über


Verwenden der Registrierungszeichenfolgenumleitung

Die Speicherung von hartcodierten Zeichenfolgen in der Windows-Registrierung ist Teil eines Lokalisierungsmodells vor Windows Vista. Es wird von MUI nicht unterstützt. Im aktuellen Modell wird die Benutzeroberfläche für das Betriebssystem in sprachspezifischen Ressourcendateien über einer sprachneutralen Basis ausgeführt. Die Komponenten des Betriebssystems verwenden die Registrierung sprachneutral.

MUI verwendet nur umgeleitete Registrierungszeichenfolgen, die von Win32 PE-Ressourcen in der Ressourcendatei der Basissprache definiert sind. Die Umleitung wird separat definiert, z. B. in einer INF-Datei. Dieser Speichertyp ermöglicht es dem Ressourcenladeprogramm, die richtigen Sprachressourcen automatisch beim Laden des Ressourcenmoduls 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 Language-Neutral-Ressource

Eine MUI-Anwendung, die unter Windows Vista ausgeführt wird und später eine sprachneutrale Zeichenfolgenressource verwendet, um den Zugriff auf sprachspezifische Zeichenfolgen zu ermöglichen, die in einer Zeichenfolgenressourcentabelle gespeichert sind. Der Anwendungscode, der diese Werte aus der Registrierung liest, wird im Abschnitt "Laden eines Language-Neutral Registrierungswerts" unter "Auffinden umgeleiteter Zeichenfolgen" beschrieben.

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

  • PE-path Gibt den Pfad der ausführbaren Datei an. Sie können den Pfad mithilfe einer Umgebungsvariablen angeben, z. B. %ProgramFiles%, um die Bereitstellung zu unterstützen. Eine Alternative zum Erstellen eines Zeichenfolgenverweises 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.
  • comment Gibt optionale Informationen für das Debuggen oder die 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 Tastenkombinationsstrings

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 Verwendungs-API Shell 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 in den entsprechenden Spalten auf die Ressourcen-DLL verwiesen, und die Ressourcenbezeichner für den Anzeigenamen und die Beschreibung Ihrer Verknüpfung werden in den entsprechenden Spalten für Ressourcenbezeichner verwendet.

Damit die Anwendungsverknüpfung mit der MUI-Ressourcentechnologie ordnungsgemäß funktioniert, beachten Sie beim Vorbereiten der Verknüpfungszeichenfolgen 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 einen Kurzbefehl 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. Bei dieser Syntax wird davon ausgegangen, dass [StartMenuItems] von Setup unterstützt wird, ähnlich der syntax, die in Syssetup.inf verwendet wird.

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

Legen Sie den Infotip 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.

Ressourcen für benutzerfreundliche Dokumenttypnamen erstellen

Sie müssen freundliche Namen 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 Programmbezeichnerschlüssel sollte beibehalten werden, um die Abwärtskompatibilität beizubehalten. Informationen zum Zugriff auf die Namen aus Ihrer Anwendung finden Sie im Abschnitt "Abfragefreundliche Dokumenttypenamen in der Registrierung" von Suche nach umgeleiteten Zeichenfolgen.

Die spezifische Arbeit umfasst die folgenden Schritte:

  1. Implementieren Sie den Anzeigenamen und die InfoTip-Zeichenfolge als sprachspezifische Ressourcen im Zeichenfolgenformat.
  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 ShellVerb Aktionszeichenfolgen

Aktionszeichenfolgen für bestimmte Verben, z. B. "open" und "edit", 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 häufig verwendete shell Verben angeben, da für shell diese Verben eigene MUI-fähige Standardwerte vorhanden sind. Sie sollten jedoch lokalisierbare Zeichenfolgenressourcen für Zeichenfolgen bereitstellen, die ungewöhnliche Verben darstellen.

Vor Windows XP-Betriebssystemen werden Zeichenfolgen für shell Verben in der Registrierung mithilfe der folgenden Syntax gerendert, wobei verb der tatsächliche verb Name angegeben wird.

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

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

Die Registrierung des alten Standardwerts wird nicht empfohlen, da es ein anderes Setup unter Windows XP und höher vom Setup auf früheren Betriebssystemen erfordert.

 

Erstellung von Ressourcen für Verb, Protocol und AuxUserType-Zeichenfolgen.

Sie sollten lokalisierbare Zeichenfolgenressourcen für Verb, Protocol 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 nur den Wert für Your 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}\verfügtVerb, definieren Sie jede einzelne Verb Zeichenfolge mithilfe von HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
  • Wenn CLSID einen oder mehrere Unterschlüssel unter HKCR\{progid}\Protocol\Stdfileediting\Verb hat, definieren Sie jede Verb Zeichenfolge einzeln 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 untergeordneten Schlüssel des eindeutigen Bezeichners für die Anwendung unter dem Registrierungsschlüssel HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall erstellen. Zu den festzulegenden Werten gehören: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, , CommentsDisplayIcon, 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 auf MUI-spezifische Weise für DisplayName_Localized bereitstellen. Sie sollten den Anzeigenamen in einer DLL, z. B. Res.dll, als Zeichenfolgenressource platzieren, vorausgesetzt, der Bezeichner ist 1245. 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 ordnet bestimmte Ereignisse sounddateien zu, z. B. einem New Mail Notification-Ereignis oder einem Kritischen Akkualarmereignis. Die Ereignisnamen müssen von der Benutzeroberfläche angezeigt werden und die 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 den Anzeigenamen hinzu. Das zugeordnete Registrierungslayout wird unten angezeigt:
HKCR\AppEvents\EventLabels
<event_name>
    (Default) REG_SZ "<description>"
    DispFileName REG_EXPAND_SZ "@<path>,-<resID>"

Wenn der shell Wert von DispFileName nicht gefunden oder abgerufen werden kann, wird die Standardbeschreibung verwendet.

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 lesbarer Name für die Abwärtskompatibilität, und Layout Display Name. Die bereitgestellten Layout Display Name Daten sollten ein Zeichenfolgenverweis des Formulars @<path>,-resIDsein, das auf eine lokalisierbare Zeichenfolgenressource verweist, die dem Tastaturlayout zugeordnet 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"

Darstellung von OLE-Objekt-Einfügen-Dialogzeichenfolgen

Sie können den Anzeigenamen eines einfügebaren OLE-Objekts als lokalisierbare Zeichenfolgenressource implementieren, die dem Code zugeordnet 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 implementieren 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. Normalerweise handelt es sich bei diesem Namen entweder um einen Englischnamen (USA) oder einen Namen in der Standardsprache der System-UI.

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. Sie 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.

Beispielsweise enthält das Registrierungsskript für das einfügebare Media Clip-Objekt 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.exegespeichert ist. Die Zeichenfolge mit dem Bezeichner 9217 in Mplay32.exe kann Zeichenfolgenressourcenwerten für eine beliebige Anzahl von Sprachen zugeordnet werden. Der englische (US-amerikanische) Name lautet "Media Clip".

Erstellen von Zeichenfolgenressourcen für die 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.

MmC-Snap-Ins lösen größtenteils die gleichen Globalisierungs- und Lokalisierungsprobleme wie die MUI-Anwendung selbst aus. Ein MMC-Snap-In muss seinen Namen in der Registrierung widerspiegeln, um angezeigt zu werden. 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 zählen NameStringdie Angabe eines lesbaren Namens für die Abwärtskompatibilität und NameStringIndirectdas Angeben eines indirekten Verweises auf eine lokalisierbare Zeichenfolgenressource. 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.dllfestlegen, 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 Register Microsoft Management Console Snap-In Strings Not Read from the Registry in Locating Redirected Strings.

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 Wert für den DisplayName Dienstnamen und den Description Wert für die Dienstbeschreibung.

Einstellungen für den Windows-Dienst werden über die Anwendung vorgenommen, wie unter „Anzeigename und Beschreibung für einen Windows-Dienst aus der Registrierung“ in „Auffinden umgeleiteter Zeichenfolgen“ beschrieben. Wenn Ihre Anwendung die Registrierungswerte für die Dienst-Benutzeroberfläche nicht festgelegt hat, bleiben die Werte in der Registrierung auf festgelegt English, auch wenn sich die Benutzeroberfläche in einer anderen Sprache befindet.

Vorbereiten von Ressourcen

Suchen nach umgeleiteten Zeichenfolgen