查找重定向的字符串

本主题讨论有关查找重定向注册表字符串的编程说明。 有关详细信息,请参阅 使用注册表字符串重定向

加载Language-Neutral注册表值

在 Windows Vista 及更高版本上,MUI 应用程序使用非特定语言的注册表值来允许访问存储在字符串资源表中的特定于语言的字符串。 有关详细信息,请参阅 使用注册表字符串重定向中的创建Language-Neutral资源。

从注册表中读取非特定语言值的应用程序代码应通过调用 RegLoadMUIStringW 以正确的用户界面语言加载字符串。 如果使用此函数,则应用程序不必显式处理资源加载。

如果要将现有应用程序更新为注册表的非特定语言用途,通常会保留现有字符串值(本地化为英语或注册表中的某些其他语言),作为回退和向后兼容性。 如果对 RegLoadMUIStringW 的调用失败,在注册表中保留文本字符串可使应用程序回退到文本字符串。 必须决定如何实现此类回退,因为 MUI 不提供对此类实现的支持。

使用 Shell API 从注册表设置快捷方式字符串

应用程序可以使用 shell API 为链接 “开始” 菜单或桌面上的文件或文件夹的快捷方式创建字符串。 有关详细信息,请参阅 使用注册表字符串重定向中的为快捷方式字符串创建资源。

应用程序可以使用 SHSetLocalizedName 加载符合 MUI 的显示名称作为快捷方式。 它应使用 IShellLink::SetDescription 来设置关联的信息提示。 调用会将字符串注册到注册表。 请考虑以下示例,其中“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 兼容方式。 此行指示存储在 Windows XP) Msascui.exe (中的字符串标识符 104,或存储在 Windows Vista) 的特定于语言的关联文件 (中。 此字符串标识符对应于“我的网络位置”。 示例中的第三行处理信息提示注册。 %CLSID_AntiSpyware% 指定表示与此组件的类标识符匹配的 GUID 的环境变量。

对于上面所示的示例,应用程序调用 SHSetLocalizedName 来指定前两个参数的可执行文件的路径,并将 idsRes 指定为“@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,104”。 调用 IShellLink::SetDescription,将信息提示的路径指定为“@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,208”。

查询注册表中的友好文档类型名称

在使用注册表字符串重定向中创建友好文档类型名称的资源中讨论了友好文档类型名称的资源创建。 若要查询友好的文档名称,应用程序应使用 IQueryAssociations::Init,然后调用 IQueryAssociations::GetString。 对 IQueryAssociations::Init 的调用指定文档类型,例如“.txt”。 对 IQueryAssociations::GetString 的 调用必须将 ASSOCSTR_FRIENDLYDOCNAME 指定为字符串标识符。

注册 Microsoft 管理控制台管理单元字符串未从注册表中读取

应用程序可以使用 Microsoft 管理控制台 (MMC) 管理单元来托管其管理任务。 使用为 Microsoft 管理控制台创建字符串资源Snap-Ins使用注册表字符串重定向中所述的注册表设置,将大多数 字符串作为资源进行处理。 但是,某些管理单元会注册 MMC 无法从注册表中读取的注册表字符串值。 在这种情况下,管理单元必须使用与 MUI 兼容的 ISnapinAbout 接口获取值。

从注册表设置 Windows 服务的显示名称和说明

如果 MUI 应用程序使用 Windows 服务,它必须显示服务显示名称和说明。 使用注册表字符串重定向的“为 Windows 服务创建字符串资源”中讨论了关联的资源。

若要设置服务显示名称,MUI 应用程序将调用 CreateServiceChangeServiceConfig。 名称是格式为“”@<PE-path>,-<stringID>[;<comment>]的字符串。 例如,如果服务由路径为 %ProgramFiles%\%MyPath%\MyDll.dll的.dll文件实现,并且特定于语言的显示名称的字符串标识符为 347,则参数指定为“@%ProgramFiles%\\%MyPath%\\MyDll.dll,-347”。 双反斜杠 (\\) 是必需的,因为 C/C++ 使用反斜杠作为字符串中的转义字符。

若要设置特定于语言的服务说明,MUI 应用程序应使SERVICE_DESCRIPTION结构的 lpDescription 成员指示格式为“”@<PE-path>,-<stringID>[;<comment>]的字符串,并引用相应的字符串标识符。 然后,应用程序调用 ChangeServiceConfig2 ,其中参数 dwInfoLevel 指定为 SERVICE_CONFIG_DESCRIPTION,参数 lpInfo 指定为 SERVICE_DESCRIPTION 结构。

查找 Win32 PE 资源

使用注册表字符串重定向