Поиск ресурсов локализованного перенаправления строк в Windows

319
cdlvcdlv

Допустим, вы хотите узнать, где в реестре находится меню, которое появляется, когда вы щелкаете правой кнопкой мыши по элементу.

Используя английский язык, вы видите, например, «Открыть командное окно здесь». Но если бы языком вашей системы был испанский, вы бы увидели «Abrir ventana de comandos aquí».

Теперь вы хотите узнать, какие элементы в реестре связаны с этим сообщением. Поиск в реестре любой из этих строк будет бесполезным, потому что вы должны искать @shell32.dll,-8506(в Windows 7, не знаю о других версиях). Тогда вы обнаружите, что в проводнике Windows есть несколько элементов, которые предлагают возможность открыть командное окно (диск, папка и т. Д.).

Это называется «перенаправление строк» и полезно, чтобы избежать изменения большого количества записей в реестре при переключении языков в системе.

Как только я рассказал вам строковый ресурс «shell32.dll», вы легко нашли все места, где он используется. Но что, если вы знаете только свою локализованную строку? Есть ли способ узнать, как на него ссылаются в реестре, и узнать все ассоциации действия? В нашем примере, скажем, вы хотите улучшить меню командного окна и не хотите оставлять какие-либо меню.

(Это всего лишь пример, потому что в данном конкретном случае вы бы искали, cmd.exeно вы понимаете, что с отслеживанием CLSID все может быть намного сложнее, поэтому вы просто ничего не знаете, кроме строки меню.)

Может быть инструментом для перечисления всех строковых ресурсов .dll? Хотя существует множество инструментов для извлечения всех видов ресурсов из программ и библиотек, я не нашел ни одного для создания такого списка, чтобы вы могли затем искать его.

0
Прочитайте [Взлом двоичного файла (иначе как открыть файлы .MUI?)] (Http://archives.miloush.net/michkap/archive/2007/10/05/5284413.html) JosefZ 6 лет назад 1
@JosefZ Спасибо. [Хакер ресурсов] (http://www.angusj.com/resourcehacker/) сделает эту работу. +1 и если вы хотите уточнить как ответ, я приму это. cdlvcdlv 6 лет назад 0

1 ответ на вопрос

1
JosefZ

Microsoft использует так называемую технологию многоязычного интерфейса пользователя, чтобы интерфейс Windows отображался на разных языках. В основном, технология MUI использует ресурсы, сохраненные в двоичных файлах с .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файл, используя, например,