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

Секреты Windows: статьи о реестре, rundll32.exe, программах Создание ActiveX-объекта на рабочем столе


Данный совет впервые был опубликован в журнале 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:"

[HKEY_CLASSES_ROOT\CLSID\"{наш CLSID-номер}"\shell\open\command]
= "exporer /root, d:"

[HKEY_CLASSES_ROOT\CLSID\"{наш CLSID-номер}"\shell\CS\command]
= "c:\program files\counter-strike\counterstrike.exe"

Вот и все. А теперь несколько доводов в пользу этого метода.

  • Вызвать контекстное меню удобнее, чем дважды щелкать по папке и ждать ее открытия, либо держать на рабочем столе 50 ярлыков.
  • Папку или ярлык можно нечаянно удалить, а наш объект может удалить только администратор и только при помощи реестра (если удалить подраздел с именем {наш CLSID-номер} из HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer\Desktop\NameSpace).
  • Наш объект нельзя переименовать и это есть хорошо. Мыслю как админ — не очень приятно в конце смены увидеть на рабочем столе ярлык для Counter-Strike с именем Вовка дур*к :-).

Рисунок 1. Пример ActiveX-объекта, расположенного на рабочем столе.

Рисунок 2. Разделы реестра, формирующие ActiveX-обект и его контекстное меню.

Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=6

В избранное