Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Оптимизация и автоматизация работы на ПК. Оболочка. Часть 6


Новости нашего сайта:

Продолжение, начало в выпусках: 1 2 3 4 5

В конец записи

Книга "Оптимизация и автоматизация работы на ПК. На 100%", Глава 1. Оптимизация Windows XP, Часть 7. Оптимизация оболочки: Проводник, Работа с контекстным меню.

Перейдем к другой части проводника — к контекстным меню файлов и папок. Через несколько месяцев работы с операционной системой Windows XP эти сначала компактные и быстрые элементы Windows превращаются в эдаких монстров на пол экрана, открытие которых приходится ждать очень долго. Что касается контекстных меню расширений файлов, то их содержимое, к счастью, можно отредактировать с помощью стандартных возможностей Windows. Для этого нужно открыть диалог СВОЙСТВА ПАПКИ (в меню СЕРВИС любой папки нужно выбрать команду СВОЙСТВА ПАПКИ) и перейти на вкладку ТИПЫ ФАЙЛОВ. Данная вкладка содержит в себе список всех зарегистрированных в системе расширений файлов (или почти всех — некоторые расширения не отображаются в этом списке из-за соответствующих значений параметра EditFlags) и позволяет как удалять сами эти расширения, так и редактировать содержимое контекстного меню файлов данного расширения. Чтобы отредактировать содержимое контекстного меню для файлов соответствующего расширения, нужно выбрать это расширение из списка и нажать на кнопку ДОПОЛНИТЕЛЬНО. После этого перед вами отобразится диалог, содержащий в себе список команд контекстного меню, а также позволяющий редактировать эти команды. В работе с данным диалогом нет ничего сложного, поэтому описывать в подробностях этот процесс мы не будем.

Редактирование контекстного меню папок

По другому дела обстоят с контекстным меню таких элементов файловой системы, как диски, папки, ActiveX-объекты. Контекстное меню этих элементов можно отредактировать только с помощью реестра и если возникает такая необходимость, пользователь просто не знает, как поступить. Поэтому давайте попробуем разобраться с тем, как же хранятся сведения о контекстном меню элементов файловой системы.

Как вы, наверное, уже догадались, все содержимое контекстного меню хранится в реестре. Для этого предназначен целый корневой раздел — HKEY_CLASSES_ROOT. Словом, он содержит в себе не только сведения о контекстном меню файлов и папок, но и все сведения о настройках работы с ActiveX-объектами, список всех зарегистрированных ActiveX-объектов, обладающих объектной моделью, все сведения о настройках работы различных расширений файлов и многое другое. Среди этого многообразия ветвей реестра нам интересны только несколько.

  • HKEY_CLASSES_ROOT\* — содержит сведения об элементах контекстного меню для любых файлов с любым расширением. Как правило, большинство новых команд контекстного меню сторонними программами добавляются именно сюда. Например, здесь можно найти команды, создаваемые антивирусом Касперского, архиватором WinRAR, команду для шифрования файлов, команду ОТКРЫТЬ С ПОМОЩЬЮ…, команду ЗАКРЕПЛЕНИЕ В МЕНЮ ''ПУСК'' и многое другое.
  • HKEY_CLASSES_ROOT\AllFilesystemObjects — содержит сведения об элементах контекстного меню для любых элементов файловой системы. Здесь можно найти определение элемента контекстного меню ОТПРАВИТЬ….
  • HKEY_CLASSES_ROOT\Unknown — содержит сведения об элементах контекстного меню для любых файлов, имеющих неизвестные системе типы расширений. Здесь можно найти определение элемента контекстного меню ОТКРЫТЬ С ПОМОЩЬЮ….
  • HKEY_CLASSES_ROOT\Drive — содержит сведения об элементах контекстного меню для значков логических дисков.
  • HKEY_CLASSES_ROOT\Folder — содержит сведения об элементах контекстного меню для значков папок.
  • HKEY_CLASSES_ROOT\Directory — содержит сведения об элементах контекстного меню только для значков папок с файлами, а также настройки контекстного меню рабочего стола и проводника. Данная ветвь реестра отличается от предыдущей тем, что все сделанные в ней изменения отражаются только на обычных папках, тогда как изменения предыдущей ветви реестра отражаются также на ActiveX-объектах, например, КОРЗИНЕ и МОЕМ КОМПЬЮТЕРЕ.

Каждая из этих ветвей определяет содержимое контекстного меню какого-либо элемента файловой системы Windows XP. Для этого в этих ветвях реестра присутствуют вложенные подразделы shell и shellex. Подраздел shell определяет обычные команды контекстного меню, тогда как подраздел shellex определяет команды контекстного меню, реализованные с помощью ActiveX-объектов.

Основная структура подраздела shell следующая (символом @ будем отображать параметр (по умолчанию)).

Структура же подраздела shellex отличается от подраздела shell. Он может содержать в себе набор предопределенных подразделов, определяющих, что именно настраивают ActiveX-объекты, описанные в данном подразделе. Чтобы указать команду контекстного меню, нужно воспользоваться предопределенным подразделом ContextMenuHandlers, создав в нем свой вложенный подраздел и в параметре по умолчанию этого подраздела указав GUID-номер своего ActiveX-объекта.

Далее в книге мы на примере создания новых элементов контекстного меню закрепим эти теоретические знания.

Редактирование списка Создать

В предыдущей главе книги упоминалось о способе скрытия или редактирования списка ОТПРАВИТЬ… контекстного меню файлов и папок. Это необходимо, так как он является основным элементом, тормозящим открытие контекстного меню и работу с ним. Но кроме него в контекстном меню проводника и рабочего стола можно встретить еще один элемент, требующий за собой внимательного ухода — список СОЗДАТЬ, позволяющий создавать шаблоны файлов с определенным расширением.

Уже через несколько месяцев работы с операционной системой Windows этот список разбухает совершенно ненужными вам элементами, создающими файлы с расширениями, о которых вы можете даже и не знать, или, по крайней мере, никогда не создавать их при помощи данного списка. Естественно, такой список неоправданно долго будет отображаться на экране, что может отбить охоту вообще пользоваться cписком СОЗДАТЬ. Поэтому за содержимым данного списка, как и за всей операционной системой Windows XP, нужно следить, удаляя из него ненужные вам элементы. Давайте попробуем это сделать.

Самым простым способом это сделать, является поиск непустых подразделов ShellNew, вложенных в подразделы расширений файлов корневого раздела HKEY_CLASSES_ROOT. После нахождения таких подразделов, нужно посмотреть на то расширение, в честь которого назван родительский по отношению к разделу ShellNew раздел. Если создание файлов с таким расширением вам не нужно, тогда можно удалять подраздел ShellNew.

Более интеллектуальным будет поиск именно подразделов ShellNew, определяющих в списке СОЗДАТЬ элементы создания ненужных вам типов файлов.

Какой бы способ вы ни выбрали, в любом случае изменения вступят в силу только после того, как вы дважды откроете список СОЗДАТЬ. В идеальном случае у вас может получиться такой вот маленьких список — рисунок. 1.16.

Рисунок 1 Рис. 1.16. Удаляем лишнее из списка Создать

Но иногда может возникнуть потребность не только в удалении элементов списка СОЗДАТЬ, но и в добавлении новых. Это также легко сделать. Достаточно только создать подраздел ShellNew в ветви реестра формата HKEY_CLASSES_ROOT\«расширение, для создания файлов которого нужно определить элемент списка Создать». После этого в созданном подразделе нужно создать один из представленных ниже параметров строкового типа (только один).

  • Command — определяет команду, которая будет выполняться при выборе соответствующего пункта меню СОЗДАТЬ. То есть, с помощью данного списка вы можете не только создавать файлы, но и, например, запускать приложения, команды rundll32 и т.д.
  • NullFile — данный параметр не должен содержать в себе никакого значения (при этом, после выбора соответствующего элемента списка, будет создаваться пустой файл с данным расширением).
  • FileName — определяет путь и имя файла, который будет создаваться (просто копироваться в текущую папку) после выбора соответствующей команды меню СОЗДАТЬ.

Пример создания элементов списка СОЗДАТЬ будет приведен в третьей части книги. А пока давайте поговорим об еще одной возможности — полном удалении данного списка из контекстного меню рабочего стола и проводника. Для этого нужно просто удалить подраздел New из ветви реестра HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers.

Добавление новых возможностей в контекстное меню файлов и папок

Ранее мы с вами рассмотрели общие вопросы создания элементов контекстного меню файлов и папок, сейчас же давайте попробуем создать собственные элементы контекстного меню, которые могут быть полезны.

  • Создание команды открытия в Notepad для файлов с незарегистрированным в системе расширением. Если вам часто приходится открывать файлы с неизвестным расширением в блокноте, чтобы узнать их содержимое, тогда можно облегчить себе жизнь, присвоив параметру (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Unknown\shell\Открыть в Notepad\command значение notepad.exe %1.
  • Создание команды Открыть с помощью… для файлов с расширением .exe. Также нетривиальной задачей является открытие исполняемых файлов при помощи программ, не ассоциированных с ними. Если в предыдущих версиях Windows можно было зажать клавишу SHIFT чтобы в контекстном меню исполняемого файла появилась команда ОТКРЫТЬ С ПОМОЩЬЮ…, то теперь такая возможность отсутствует. Поэтому, если вы часто открываете исполняемые файлы в блокноте или каком-нибудь дизассемблере или компиляторе, тогда придется самостоятельно добавить к контекстному меню исполняемых файлов команду ОТКРЫТЬ С ПОМОЩЬЮ…. Для этого достаточно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\exefile\shell\Открыть с помощью\command задать значение rundll32.exe shell32.dll,OpenAs_RunDLL %1 %2.
  • Создание команды открытия в cmd.exe для папок. Еще одной операцией, которая может понадобиться опытному пользователю. Является открытие командной строки с уже определенным в ней путем, вместо обычного открытия в папке %userprofile%. Для этого нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Directory\shell\Открыть в cmd\command задать значение cmd.exe /K cd %1.
  • Создание команды Копировать в папку… для значков папок. Данная команда позволяет вызвать диалог, с помощью которого можно определить папку, в которую будет скопирована папка, чьим контекстным меню вы сейчас пользуетесь. Для добавления этой команды нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\CopyTo задать значение {C2FBB630-2971-11D1-A18C-00C04FD75D13}.
  • Создание команды Переместить в папку… для значков папок. Данная команда позволяет вызвать диалог, с помощью которого можно определить папку, в которую будет перемещена папка, чьим контекстным меню вы сейчас пользуетесь. Для добавления этой команды нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\MoveTo задать значение {C2FBB631-2971-11d1-A18C-00C04FD75D13}.
  • Создание команды Копировать на компакт-диск или устройство для значков папок. С помощью этой довольно интересной команды вы сможете сразу из контекстного меню папки (содержащей хотя бы один музыкальный файл) отобразить окно Windows Media Player с уже открытой вкладкой КОПИРОВАТЬ НА КОМПАКТ-ДИСК. Для добавления этой команды нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\CopyToDisk задать значение {8DD448E6-C188-4aed-AF92-44956194EB1F}.
  • Создание команды Воспроизвести с помощью проигрывателя для значков папок. С помощью этой команды вы сможете из контекстного меню папки, содержащей хотя бы один музыкальный файл (или вложенные папки, содержащие музыкальные файлы) открыть проигрыватель Windows Media Player с уже загруженным плей-листом, построенным на основе содержимого данной папки. Для добавления этой команды нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\OpenInFolder задать значение {CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}.
  • Создание команд Поставить в очередь и Добавить в список для значков папок. С помощью этих команд вы сможете из контекстного меню папки, содержащей хотя бы один музыкальный файл, вызвать функцию создания списка воспроизведения на основе содержимого данной папки или добавить все музыкальные файлы из данной папки к плей-листу работающего в данный момент проигрывателя. Для добавления этой команды нужно в параметре (по умолчанию) ветви реестра HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\AddToList задать значение {F1B9284F-E9DC-4e68-9D7E-42362A59F0FD}.

Редактирование диалога Открыть с помощью…

Данный диалог отображается после выбора команды ОТКРЫТЬ С ПОМОЩЬЮ… из контекстного меню файла и содержит в себе список программ, с помощью которых можно открыть данный файл (файлы с таким расширением). Можно заметить, что это очень удобная функция, но после долгого использования операционной системы список программ, отображаемых в данном диалоге, редко оказывается меньше 20-40. Причем большинство из них вы никогда не используете для открытия файлов, а некоторых вообще могут уже давным-давно быть удалены с вашего диска.

К сожалению, в операционной системе Windows XP нет стандартных диалогов, позволяющих отредактировать содержимое данного списка. Но это не означает, что его нельзя отредактировать самостоятельно с помощью реестра. Для этого нужно всего лишь воспользоваться ветвью реестра HKEY_CLASSES_ROOT\Applications. Данная ветвь содержит в себе набор подразделов, названных в честь определенной программы, которая может или не может отображаться в списке ОТКРЫТЬ С ПОМОЩЬЮ…. По умолчанию указанная в данной ветви реестра программа отображается в диалоге, но если в подразделе, определяющем эту программу, создать параметр строкового типа NoOpenWith, тогда она исчезнет из списка.

Работа с отображением папок

Начиная с Windows 98, в операционной системе появилась такая возможность, как хранение вида и настроек отображения для каждой отдельной папки. Именно благодаря этой возможности проводник помнит, что в предыдущий раз вы давали этой папке вид, например, эскизы страниц, и при повторном открытии данной папки он уже применяет вид ЭСКИЗЫ СТРАНИЦ, а не значки, как по умолчанию. Тем не менее, несмотря на удобство, данная возможность замедляет открытие проводника, особенно если в реестре сейчас хранятся сведения о настройках 2000-3000 других папок. На слабом компьютере это сказывается особенно сильно, поэтому если вы обладаете не очень современным компьютером и при выборе между пользой и быстротой выбираете быстроту, тогда можно заставить Windows XP не запоминать вид папок. Для этого достаточно воспользоваться вкладкой ВИД диалога СВОЙСТВА ПАПКИ (отображается командой СЕРВИС/СВОЙСТВА ПАПКИ). В списке ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ данной папки нужно сбросить флажок ПОМНИТЬ ПАРАМЕТРЫ ОТОБРАЖЕНИЯ КАЖДОЙ ПАПКИ.

Но это решение можно назвать крайним. Все-таки запоминание вида папок является довольно удобной функцией, расстаться с которой очень обидно. Поэтому можно пойти на компромиссный шаг. По умолчанию операционная система может запоминать настройки 5000 последних папок. Это очень много — если у вас на компьютере действительно есть пять тысяч папок, которые часто используются, то могу предположить, что каждая из них открывается по несколько секунд. Для домашнего пользователя, который часто открывает только 15-30 основных папок, подойдет и хранение настроек 50-100 папок. Чтобы изменить максимальное число папок, настройки которых будут запоминаться, нужно воспользоваться ветвями реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell и HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam. В этих ветвях присутствует параметр REG_DWORD типа BagMRU Size, который как раз и содержит максимально возможное число папок. Если вы хотите установить максимальным 100 папок, тогда этому параметру нужно присвоить значение 64.

Можно пойти еще дальше. Если на вашем компьютере есть только несколько папок, для которых вы хотели бы применять вид ЭСКИЗЫ СТРАНИЦ, а настройки остальных папок вас совершенно не интересуют, тогда можно просто заблокировать доступ для своей учетной записи (оставив только доступ на чтение) к ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags,чтобы настройки других папок не запоминались, а запомненные настройки никогда не изменялись. Перед этим только не забудьте удалить все содержимое подраздела Bags, чтобы сбросить все текущие настройки папок, а потом открыть все папки, настройки которых вы хотите изменить, и изменить способ отображения их содержимого на тот, который вам нужен. Лучше открывать эти папки не последовательно, а сразу, например, с помощью диалога ВЫПОЛНИТЬ, чтобы в подразделе Bags не запоминались настройки промежуточных открытых вами папок.

Продолжение следует

Оцените: 1 2 3 4 5
В начало записи
Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=194

В избранное