Partilhar via


Localizando cadeias de caracteres redirecionadas

Este tópico discute instruções de programação para localizar cadeias de caracteres do Registro redirecionadas. Para obter mais informações, consulte Usando o redirecionamento de cadeia de caracteres do Registro.

Carregar um valor do Registro Language-Neutral

No Windows Vista e posteriores, o aplicativo MUI usa um valor de registro neutro em idioma para permitir o acesso a cadeias de caracteres específicas do idioma armazenadas em uma tabela de recursos de cadeia de caracteres. Para obter mais informações, consulte Criar um recurso de Language-Neutral em Usando o redirecionamento de cadeia de caracteres do Registro.

O código do aplicativo que lê o valor neutro do idioma do Registro deve carregar as cadeias de caracteres no idioma correto da interface do usuário chamando RegLoadMUIStringW. Se estiver usando essa função, seu aplicativo não precisará lidar explicitamente com o carregamento de recursos.

Se você estiver atualizando um aplicativo existente para o uso neutro de idioma do Registro, normalmente manterá os valores de cadeia de caracteres existentes, localizados em inglês ou em algum outro idioma único no registro, como fallbacks e para compatibilidade com versões anteriores. Manter uma cadeia de caracteres literal no registro permite que o aplicativo faça fallback para a cadeia de caracteres literal se uma chamada para RegLoadMUIStringW falhar. Você deve decidir como implementar esse fallback, pois a MUI não oferece suporte para essa implementação.

Usar a API do Shell para definir cadeias de caracteres de atalho do Registro

Seu aplicativo pode usar a API do shell para criar cadeias de caracteres para atalhos que vinculam arquivos ou pastas no menu Iniciar ou na área de trabalho. Para obter mais informações, consulte Criar recursos para cadeias de caracteres de atalho em Usando o redirecionamento de cadeia de caracteres do Registro.

O aplicativo pode usar SHSetLocalizedName para carregar o nome de exibição compatível com MUI para um atalho. Ele deve usar IShellLink::SetDescription para definir a InfoTip associada. As chamadas registram as cadeias de caracteres com o Registro. Considere os seguintes exemplos, para os quais "HKCR" representa o HKEY_CLASSES_ROOT chave do Registro:

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"

A primeira linha fornece uma cadeia de caracteres literal não dimensionada para fallback e compatibilidade com versões anteriores. A segunda linha mostra a maneira compatível com MUI de registrar o nome de exibição. Essa linha indica o identificador de cadeia de caracteres 104 armazenado em Msascui.exe (para Windows XP) ou em seu arquivo específico de idioma associado (para Windows Vista). Esse identificador de cadeia de caracteres corresponde a "Meus Locais de Rede". A terceira linha no exemplo manipula o registro do InfoTip. %CLSID_AntiSpyware% especifica uma variável de ambiente que representa o GUID que corresponde ao identificador de classe desse componente.

Para o exemplo mostrado acima, o aplicativo chama SHSetLocalizedName para especificar o caminho do executável para os dois primeiros parâmetros e especificar idsRes como "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,104". Uma chamada para IShellLink::SetDescription especifica o caminho para a Dica de Informações como "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,208".

Consultar nomes de tipo de documento amigáveis no Registro

A criação de recursos para nomes de tipo de documento amigáveis é discutida em Criar recursos para nomes de tipo de documento amigáveis em Usando o redirecionamento de cadeia de caracteres do registro. Para consultar um nome de documento amigável, o aplicativo deve usar IQueryAssociations::Init, seguido por uma chamada para IQueryAssociations::GetString. A chamada para IQueryAssociations::Init especifica o tipo de documento, por exemplo, ".txt". A chamada para IQueryAssociations::GetString deve especificar ASSOCSTR_FRIENDLYDOCNAME como o identificador de cadeia de caracteres.

Registrar cadeias de caracteres de snap-in do Console de Gerenciamento Microsoft não lidas do Registro

Seu aplicativo pode usar um snap-in do MMC (Console de Gerenciamento Microsoft) para hospedar suas tarefas de gerenciamento. A maioria das cadeias de caracteres é tratada como recursos usando as configurações do Registro descritas em Criar recursos de cadeia de caracteres para o Console de Gerenciamento da Microsoft Snap-Ins em Usando o redirecionamento de cadeia de caracteres do Registro. No entanto, alguns snap-ins registram valores de cadeia de caracteres do Registro que o MMC não pode ler do registro. Nesse caso, o snap-in deve obter os valores usando a interface ISnapinAbout , que é compatível com MUI.

Definir o Nome de Exibição e a Descrição para um Serviço Windows do Registro

Se o aplicativo MUI estiver usando um serviço Windows, ele deverá exibir o nome de exibição e a descrição do serviço. Os recursos associados são discutidos em "Criar recursos de cadeia de caracteres para um serviço Windows" em Usando o redirecionamento de cadeia de caracteres do Registro.

Para definir o nome de exibição do serviço, o aplicativo MUI chama CreateService ou ChangeServiceConfig. O nome é uma cadeia de caracteres do formato "@<PE-path>,-<stringID>[;<comment>]". Por exemplo, se o serviço for implementado por um arquivo de .dll com o caminho %ProgramFiles%\%MyPath%\MyDll.dll e o identificador de cadeia de caracteres do nome de exibição específico do idioma for 347, o parâmetro será especificado como "@%ProgramFiles%\\%MyPath%\\MyDll.dll,-347". As barras invertidas duplas (\\) são necessárias porque o C/C++ usa a barra invertida como um caractere de escape em cadeias de caracteres.

Para definir a descrição do serviço específico do idioma, o aplicativo MUI deve tornar o membro lpDescription de uma estrutura SERVICE_DESCRIPTION indicar uma cadeia de caracteres do formulário "@<PE-path>,-<stringID>[;<comment>]", fazendo referência ao identificador de cadeia de caracteres apropriado. Em seguida, o aplicativo chama ChangeServiceConfig2 com o parâmetro dwInfoLevel especificado como SERVICE_CONFIG_DESCRIPTION e o parâmetro lpInfo especificado como a estrutura SERVICE_DESCRIPTION .

Localizando recursos do Win32 PE

Usando o redirecionamento de cadeia de caracteres do Registro