Данный совет впервые был опубликован в журнале CHIP.
Здравствуйте, уважаемые читатели. Хочу задать вам риторический вопрос — у вас на рабочем столе много ярлыков? Предполагаю ваш ответ, ведь сам такой же :-). Но я хочу предложить вам решение — группировка ярлыков. Конечно, предложить их слаживать в папки было бы банально, поэтому вот вам более интересный способ — создание ActiveX-объектов.
Что такое ActiveX-объекты? Это значки Мой компьютер, Корзина, Мои документы, Панель управления, Назначенные задания и т.д. Давайте и мы сделаем что-нибудь подобное...
Шаг 1
Откроем ветвь реестра HKCR\CLSID. Здесь лежат разделы с описанием всех ActiveX-объектов, установленных на вашем компьютере. А дальше есть два варианта действий.
Либо создать CLSID-номер при помощи специальной программы, генерирующей неповторяемые имена (например guidgen.exe, поставляемой вместе с Visual C++), а потом создать раздел с именем "{наш CLSID-номер}" в текущей ветви реестра.
Либо просто создать раздел с CLSID-номером, которого еще нет в реестре (не советую пользоваться этим способом постоянно, хотя для ознакомления вполне подходит...).
Шаг 2
ActiveX-объект у нас есть, поздравляю. Теперь давайте поместим его на рабочий стол.
Для этого нужно воспользоваться ветвью реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer\Desktop\NameSpace и создать в нем подраздел с именем {наш CLSID-номер}. Теперь жмем F5 и считаем, что этот объект есть на рабочем столе...
Шаг 3
Теперь изменим общее представление нашего объекта.
Переходим в ветвь реестра HKCR\CLSID\{наш CLSID-номер} и изменяем параметр (по умолчанию). В нем хранится имя нашего объекта (то есть, имя будущего значка).
Еще можно создать текст-подсказку, появляющийся при наведении указателя мышки на значок. Для этого нужно поместить нужный текст в параметр строкового типа InfoTip.
Что нам еще нужно? Правильно, сам значок. Добавляем раздел DefaultIcon в ветвь реестра HKCR\CLSID\{наш CLSID-номер}, после чего в параметре (по умолчанию) нового раздела указываем путь к нашему любимому значку.
И последний штрих - удаление из контекстного меню всех ненужных команд. Для этого создаем раздел ShellFolder в ветви реестра HKCR\CLSID\{наш CLSID-номер}, а в нем параметр Attributes (тип reg_dword), равный нулю. Это нам поможет удалить такие стандартные команды контекстного меню, как Свойства, Вырезать, Копировать, Вставить, Переименовать. Одно плохо — в контекстном меню остается команда Создать Ярлык, которую никак
нельзя удалить...
Шаг 4
Ну ладно, пусть команда Создать Ярлык остается, подумаешь, одна лишняя команда... А теперь самая творческая работа — создание пунктов контекстного меню. Для этого добавляем раздел Shell в ветвь реестра HKCR\CLSID\{наш CLSID-номер}. В этом разделе будут храниться названия контекстных меню (в качестве подразделов соответствующего раздела). А в подразделах, определяющих команды контекстного меню, нужно создать раздел command, параметр (по умолчанию) которого как раз и определяет запускаемую команду.
В качестве примера давайте рассмотрим reg-файл, создающий команды контекстного меню.
REGEDIT4
[HKEY_CLASSES_ROOT\CLSID\"{наш CLSID-номер}"\shell\open]
= "Открыть диск D:"
Вот и все. А теперь несколько доводов в пользу этого метода.
Вызвать контекстное меню удобнее, чем дважды щелкать по папке и ждать ее открытия, либо держать на рабочем столе 50 ярлыков.
Папку или ярлык можно нечаянно удалить, а наш объект может удалить только администратор и только при помощи реестра (если удалить подраздел с именем {наш CLSID-номер} из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer\Desktop\NameSpace).
Наш объект нельзя переименовать и это есть хорошо. Мыслю как админ — не очень приятно в конце смены увидеть на рабочем столе ярлык для Counter-Strike с именем Вовка дур*к :-).
Рисунок 1. Пример ActiveX-объекта, расположенного на рабочем столе.
Рисунок 2. Разделы реестра, формирующие ActiveX-обект и его контекстное меню.