Введение
В данной статье я расскажу о том, как можно добавить компоненты системных приложений, а также ярлык на любую программу в панель управления, мой компьютер, а также на рабочий стол.
Так как добавлять ярлыки будем таким образом, чтобы пользователь не смог их удалить из контекстного меню, а также нажатием на кнопку Delete на клавиатуре, добавлять их будем при помощи системного реестра. Для этого нам нужно будет создать или воспользоваться существующим GUID в ветке реестра HKEY_CLASSES_ROOT\CLSID\, для генерации которого, в случае необходимости, можно воспользоваться стандартной утилитой uuidgen.exe, входящей в состав Microsoft SDK, либо перейдя по следующей ссылке. В свою очередь, GUID (Globally Unique Identifier) — это статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028х1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, достаточно мала.
В тексте GUID записывается в виде строки из шестнадцатеричных цифр, разбитых на группы дефисами и окружённой фигурными скобками: {6F9619FF-8B86-D011-B42D-00CF4FC964FF}. Microsoft применяет GUID в OLE, COM и DCOM — например, в качестве идентификаторов для классов (CLSID), интерфейсов (IID), библиотек типов (LIBID). Использование GUID гарантирует, что две (возможно, несовместимые) версии одного компонента могут иметь одно и то же имя, но быть отличимыми по GUID.
Алгоритм, который Microsoft использовала для генерации GUID, был широко раскритикован. В частности, в качестве основы для генерации части цифр GUID использовался MAC-адрес сетевого адаптера, что означало, например, что по данному документу MS Word (также получающему при создании свой уникальный GUID) можно было определить компьютер, на котором он был создан. Позже Microsoft изменила алгоритм таким образом, чтобы он не включал в себя MAC-адрес.
Для корректного описания объекта нужно создать следующие разделы внутри нашего CLSID. Например:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}]
@="Редактор реестра"
"InfoTip"="Открывает редактор системного реестра"
"System.ControlPanel.Category"="5"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\DefaultIcon]
@="%SYSTEMROOT%\\regedit.exe"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,72,00,65,00,67,00,65,00,64,00,69,00,74,00,2e,00,65,00,78,00,65,00,\
00,00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\ShellFolder]
"Attributes"=dword:00000000
Про все разделы и параметры реестра, которые применяются в текущем твике описаны в следующей таблице:
Раздел реестра | Параметр | Тип данных | Значение | Описание |
HKCR\CLSID\{ID} | @ | REG_SZ | Редактор реестра | Название ярлыка |
HKCR\CLSID\{ID} | InfoTip | REG_SZ | Открывает редактор реестра | Подробное описание ярлыка. Отображается при наведении курсора на сам ярлык |
HKCR\CLSID\{ID}\DefaultIcon | @ | REG_SZ | %SYSTEMROOT%\\regedit.exe | Путь к иконке для ярлыка |
HKCR\CLSID\{ID}\Shell\Open\Command | @ | REG_SZ | 25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,72,00,65,00,67,00,65,00,64,00,69,00,74,00,2e,00,65,00,78,00,65,00,\ 00,00 | Путь к самому приложению |
HKCR\CLSID\{ID}\ShellFolder | Attributes | DWORD | 00000000 | Запрещает переименование/удаление ярлыка |
Если значение параметра Attributes не указывается, то созданный ярлык можно будет переименовывать и удалять.
Добавление ярлыка в "Панель управления"
После того, как GUID будет добавлен, необходимо указать его в разделе, который отвечает за отображение компонентов в "Панели управления", "Компьютере" или на рабочем столе. Например, для того, чтобы создать новый ярлык в панели управления, нужно сделать следующее: в разделе
Windows Registry Editor Version 5.00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\
создаем новый раздел, название которого будет полностью соответствовать созданному нами ранее GUID. В нем случае, будет выглядеть так: {77708248-f839-436b-8919-527c410f48b9}. После этого, в созданном разделе, изменить значение параметра по умолчанию (@), например так: @="Добавляет редактор системного реестра на Панель управления"
В итоге должно получиться следующее:
Увеличить рисунок
Сам твик реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}]
@="Редактор реестра"
"InfoTip"="Открывает редактор системного реестра"
"System.ControlPanel.Category"="5"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\DefaultIcon]
@="%SYSTEMROOT%\\regedit.exe"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,72,00,65,00,67,00,65,00,64,00,69,00,74,00,2e,00,65,00,78,00,65,00,\
00,00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\ShellFolder]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{77708248-f839-436b-8919-527c410f48b9}]
@="Добавляет редактора системного реестра в панель управления"
Добавление ярлыка в "Компьютер"
Для того, чтобы в новый ярлык появился в окне "Компьютер", необходимо немного изменить твик, который рассматривался выше. В данном случае используемый GUID нужно добавить в раздел, который отвечает за "Компьютер", а именно:
Windows Registry Editor Version 5.00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{CLSID}
. После этого ярлык появится в группе "Другие", как показано на следующем скриншоте:
Увеличить рисунок
Твик реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}]
@="Редактор реестра"
"InfoTip"="Открывает редактор системного реестра"
"System.ControlPanel.Category"="5"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\DefaultIcon]
@="%SYSTEMROOT%\\regedit.exe"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,72,00,65,00,67,00,65,00,64,00,69,00,74,00,2e,00,65,00,78,00,65,00,\
00,00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\ShellFolder]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{77708248-f839-436b-8919-527c410f48b9}]
@="Добавляет редактора системного реестра в Компьютер"
Добавление ярлыка на рабочий стол
Для того, чтобы в новый ярлык появился на рабочем столе, нужно сделать следующее: используемый GUID добавляем в раздел, который отвечает за рабочий стол Windows, а именно в раздел
Windows Registry Editor Version 5.00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{CLSID}
После этого ярлык появится на рабочем столе, причем удалить без помощи реестра будет невозможно. Увидеть это можно на скриншоте:
Твик реестра:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}]
@="Редактор реестра"
"InfoTip"="Открывает редактор системного реестра"
"System.ControlPanel.Category"="5"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\DefaultIcon]
@="%SYSTEMROOT%\\regedit.exe"
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open]
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\Shell\Open\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,72,00,65,00,67,00,65,00,64,00,69,00,74,00,2e,00,65,00,78,00,65,00,\
00,00
[HKEY_CLASSES_ROOT\CLSID\{77708248-f839-436b-8919-527c410f48b9}\ShellFolder]
"Attributes"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{77708248-f839-436b-8919-527c410f48b9}]
@="Добавляет редактора системного реестра на рабочий стол"
Заключение
В данной статье я рассказал о том, как можно добавить ярлык для любого приложения как компонент "Панели управления", "Моего компьютера", а также как можно его добавить на рабочий стол при помощи системного реестра Windows. Благодаря этому руководству можно добавлять ярлыки без возможности удаления пользователями, то есть можно дать пользователям возможность открывать необходимые им приложения непосредственно из "Компьютера", а также запретить удалять некоторые ярлыки, которые расположены на рабочем столе.