5

Когда я перехожу к «HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WMP.PlayCD\Shell\Play» в реестре Windows, я нахожу один REG_EXPAND_SE с именем MUIVerb в моей системе Windows 7. Однако в его содержании содержится "@% windir%\system32\wmploc.dll, -6503"

Теперь мой вопрос: что означает или делает этот символ @? Я вырос в MS-DOS, и раньше такого не видел. Должен ли я интерпретировать его как @ как в адресе электронной почты? Каков окончательный результат. Становится ли он "C:\% windir%\system32\wmploc.dll, -6503" в конце концов?

1 ответ1

7

Сам реестр является просто иерархическим хранилищем данных; обозначения и значения зависят от программы, использующей данные.

В этом случае в значении MUIVerb Explorer хранит текстовые описания действий с файлами. Некоторое время они сохранялись в реестре напрямую, но когда были введены различные "языковые пакеты" Windows, переводимый текст перемещался в файловые ресурсы, а описания, начинающиеся с « @ », интерпретировались Проводником как «текст сохраняется в следующем месте (пронумерованный ресурс 'STRING' файла EXE/DLL)". (Можно иметь несколько версий одного и того же ресурса для разных языков. Вы можете использовать Resource Explorer или аналогичные инструменты для просмотра файлов DLL и EXE.)

Одно исключение из правила "реестр как хранилище данных" выше. Обратите внимание, что тип данных - REG_EXPAND_SZ , а не REG_SZ . Это означает, что когда Explorer читает значение, в нем будут развернуты определенные переменные среды - Explorer получит " @C:\WINDOWS\system32\wmploc.dll,-6503 " (с расширенным %windir% ). Это единственная "особая" вещь, которую могут иметь значения и данные реестра.

Остальное полностью зависит от Explorer - начальный « @ » означает, что Explorer должен загрузить библиотеку C:\WINDOWS\system32\wmploc.dll , найти в ней строковый ресурс -6503 и использовать его содержимое в качестве окончательного текста для отображения пользователю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .