Поиск перенаправленных строк
В этом разделе рассматриваются инструкции по программированию для поиска перенаправленных строк реестра. Дополнительные сведения см. в разделе Использование перенаправления строк реестра.
Загрузка значения реестра Language-Neutral
В Windows Vista и более поздних версиях приложение MUI использует значение реестра, не зависящее от языка, чтобы разрешить доступ к строкам для конкретного языка, хранящимся в таблице строковых ресурсов. Дополнительные сведения см. в разделе Создание ресурса Language-Neutral статьи Использование перенаправления строк реестра.
Код приложения, который считывает нейтральное для языка значение из реестра, должен загружать строки на правильном языке пользовательского интерфейса, вызвав RegLoadMUIStringW. При использовании этой функции приложению не нужно явно работать с загрузкой ресурсов.
При обновлении существующего приложения для использования реестра, не зависящих от языка, как правило, существующие строковые значения, локализованные на английском языке или на какой-либо другой отдельный язык, сохраняются в реестре в качестве резервных вариантов и для обеспечения обратной совместимости. Сохранение литеральной строки в реестре позволяет приложению вернуться к строке литерала в случае сбоя вызова RegLoadMUIStringW . Необходимо решить, как реализовать такой резервный вариант, так как muI не поддерживает такую реализацию.
Использование API оболочки для задания строк ярлыков из реестра
Приложение может использовать API оболочки для создания строк для ярлыков, которые связывают файлы или папки в меню "Пуск" или на рабочем столе. Дополнительные сведения см. в разделе Создание ресурсов для строк ярлыков статьи Использование перенаправления строк реестра.
Приложение может использовать SHSetLocalizedName для загрузки отображаемого имени, совместимого с MUI, для ярлыка. Он должен использовать IShellLink::SetDescription для задания связанной подсказки InfoTip. Вызовы регистрируют строки в реестре. Рассмотрим следующие примеры, для которых "HKCR" представляет HKEY_CLASSES_ROOT раздел реестра:
HKCR,"CLSID\%CLSID_AntiSpyware%",,,"Windows AntiSpyware"
HKCR,"CLSID\%CLSID_AntiSpyware%","LocalizedString",,"@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,-104"
HKCR,"CLSID\%CLSID_AntiSpyware%","InfoTip",,"@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,-208"
Первая строка содержит нелокализованную литеральную строку для резервной и обратной совместимости. Во второй строке показан совместимый с MUI способ регистрации отображаемого имени. Эта строка указывает идентификатор строки 104, хранящийся в Msascui.exe (для Windows XP) или в связанном с ним файле языка (для Windows Vista). Этот строковый идентификатор соответствует "My Network Places" (Мои сетевые расположения). Третья строка в примере обрабатывает регистрацию InfoTip. %CLSID_AntiSpyware% указывает переменную среды, представляющую GUID, соответствующий идентификатору класса этого компонента.
В приведенном выше примере приложение вызывает SHSetLocalizedName , чтобы указать путь к исполняемому файлу для первых двух параметров, и указать idsRes как "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,104". Вызов метода IShellLink::SetDescription задает путь к подсказке InfoTip как "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,208".
Понятные для запросов имена типов документов в реестре
Создание ресурсов для понятных имен типов документов рассматривается в статье Создание ресурсов для понятных имен типов документов в статье Использование перенаправления строк реестра. Чтобы запросить понятное имя документа, приложение должно использовать IQueryAssociations::Init, а затем вызвать IQueryAssociations::GetString. Вызов метода IQueryAssociations::Init указывает тип документа, например ".txt". Вызов IQueryAssociations::GetString должен указывать ASSOCSTR_FRIENDLYDOCNAME в качестве идентификатора строки.
Регистрация оснастки консоли управления (оснастки) строки, которые не считываются из реестра
Приложение может использовать оснастку консоли управления (MMC) для размещения задач управления. Большинство строк обрабатываются как ресурсы с помощью параметров реестра, описанных в разделе Создание строковых ресурсов для консоли управления (МАЙКРОСОФТ) Snap-Ins раздела Использование перенаправления строк реестра. Однако некоторые оснастки регистрируют строковые значения реестра, которые MMC не может считывать из реестра. В этом случае оснастка должна получить значения с помощью интерфейса ISnapinAbout , совместимого с MUI.
Установка отображаемого имени и описания службы Windows из реестра
Если приложение MUI использует службу Windows, оно должно отображать отображаемое имя и описание службы. Связанные ресурсы рассматриваются в разделе "Создание строковых ресурсов для службы Windows" раздела Использование перенаправления строк реестра.
Чтобы задать отображаемое имя службы, приложение MUI вызывает CreateService или ChangeServiceConfig. Имя представляет собой строку в формате "@<PE-path>,-<stringID>[;<comment>]
". Например, если служба реализуется .dll файлом с путем %ProgramFiles%\%MyPath%\MyDll.dll, а идентификатор строки отображаемого имени для конкретного языка — 347, параметр задается как "@%ProgramFiles%\\%MyPath%\\MyDll.dll,-347
". Двойные обратные косые черты (\\) необходимы, так как В/C++ использует обратную косую черту в качестве escape-символа в строках.
Чтобы задать описание службы для конкретного языка, приложение MUI должно сделать элемент lpDescriptionSERVICE_DESCRIPTION структуры, обозначающую строку в форме "@<PE-path>,-<stringID>[;<comment>]
", ссылающуюся на соответствующий строковый идентификатор. Затем приложение вызывает ChangeServiceConfig2 с параметром dwInfoLevel , указанным как SERVICE_CONFIG_DESCRIPTION и параметром lpInfo , указанным в качестве структуры SERVICE_DESCRIPTION .
Связанные темы