在 Windows 中查找本地化字符串重定向资源

在 Windows 中查找本地化字符串重定向资源

假设您想要找出右键单击某项时出现的菜单在注册表中的什么位置。

例如,使用英语时,您会看到“在此处打开命令窗口”。但是,如果您的系统语言是西班牙语,您会看到“在此处打开命令窗口”。

现在您想知道注册表中的哪些项与此消息相关。在注册表中搜索这些字符串中的任何一个都是徒劳的,因为您应该查找@shell32.dll,-8506(在 Windows 7 中,不知道其他版本)。然后您会发现 Windows 资源管理器中有几个项目提供打开命令窗口(驱动器、文件夹等)的选项。

这就是所谓的“字符串重定向”并且有助于避免在系统中切换语言时更改大量注册表项。

一旦我告诉您“shell32.dll”字符串资源,您就可以轻松找到使用它的所有地方。但是如果您只知道本地化字符串怎么办?有没有办法找出注册表中的引用方式并了解操作的所有关联?在我们的示例中,假设您想改进命令窗口菜单并且不想遗漏任何菜单。

(这只是一个例子,因为在这个特殊的情况下你会寻找,cmd.exe但你明白了——事情可能更加复杂,涉及要跟踪的 CLSID,所以你只知道菜单字符串。)

是否有一个工具可以列出 .dll 的所有字符串资源?虽然有许多工具可以从程序和库中提取各种资源,但我发现没有一个可以生成这样的列表,因此您可以搜索它。

答案1

微软使用所谓的多语言用户界面技术,使 Windows 界面能够以不同的语言显示。基本上,移动用户界面技术使用以扩展名保存的二进制文件中的资源.mui。例如,shell32.dll菜单、对话框、消息等中的本地化字符串:

==> dir %systemroot%\system32\shell32.dll* /B /S
C:\WINDOWS\system32\shell32.dll
C:\WINDOWS\system32\cs-CZ\shell32.dll.mui
C:\WINDOWS\system32\en-GB\shell32.dll.mui
C:\WINDOWS\system32\sk-SK\shell32.dll.mui

可以.mui使用例如打开文件

相关内容