Войти

Показать полную графическую версию : Создание объектов в "Мой компьютер"


defrag
22-11-2006, 15:41
Подскажите пожалуйста, как можно в папке "Мой компьютер" создать ссылку на собственный объект?
Ничего необчного не нужно, нужна просто ссылка на одну папку. И чтобы она таким образом была видна в древовидном меню "Проводника" наряду с логическими дисками и "Панелью управления".

Извиняюсь заранее, если подобные вопросы задаются каждый день, но поиском я ничего не нашел :(

Blast
22-11-2006, 17:08
Было где-то, но с разбегу и сам не нашел :)
Пробуем делать так:
1) создайте идентификатор своей папки в ветках HKEY_CLASSES_ROOT\CLSID и HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID такого же вида как там уже существуют, например {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - здесь дайте волю фантазии, значение произвольное, а можете и этот взять.

2) В созданном подразделе создавайте строковый (REG_SZ) параметр по умолчанию со значением равным имени папки которое хотите чтоб отображалось:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}
Параметр: (По умолчанию)
Значение: Своя папка

3) Создайте в новом разделе подраздел DefaultIcon, а в нем строковый параметр со значением равным пути к *.ico файлу - файлу иконки папки:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\DefaultIcon
Параметр: (По умолчанию)
Значение: c:\myicon.ico (например)

4) Затем еще подраздел InProcServer32 и в нем два также строковых параметра - по умолчанию и ThreadingModel, значение первого shell32.dll, значение второго Apartment:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\InProcServer32
Параметр: (По умолчанию)
Значение: shell32.dll
Параметр: ThreadingModel
Значение: Apartment

5) Создайте подраздел Shell, в нем подраздел Open, а в этом Command, значение параметра по умолчанию = команда открытия вашей папки:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\Shell\Open\Command
Параметр: (По умолчанию)
Значение: C:\Windows\explorer /n / root, C:\MyFolder
где C:\MyFolder - путь к вашей папке

6) После этого еще подраздел ShellEx, в нем PropertySheetHandler, а в нем свой идентификатор, то есть {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}
здесь параметры вроде как не нужны:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\ShellEx\PropertySheetHandler\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}

7) Еще один подраздел: ShellFolder, а в нем двоичный параметр (REG_BINARY) Attributes:
HKEY_CLASSES_ROOT\CLSID\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A}\ShellFolder
Параметр: Attributes
Значение: hex:00,00,00,00

8) Теперь разместим папку в Моем компьютере и если надо на рабочем столе:
В ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\
создайте подраздел со своим идентификатором {912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - это для отображения на рабочем столе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{912251E4-9C9C-44D9-8BDE-F66BAD1E3F3A} - для отображения в Моем компьютере

Вроде все, должно работать

defrag
22-11-2006, 21:12
Огромное спасибо! В общих чертах понятно.

Получилось, но не совсем то, что мне хотелось...
Нужно, чтобы папка открывалась в текущем окне, а не новом (как при клике на локальных дисках), а также, чтобы эта папка была видна в левой древовидной панели, которая появляется после нажатия кнопки "Папки" и была раскрываемая (ну т.е. опять же как любой локальный диск).

Чтобы в этом списке папка появилась, я добился, изменив Attributes в ShellFolder на hex:00,00,04,f0 (подсмотрел у других папок), но проблема в том, что эта папка там только присутствует, но ее нельзя выбрать или "развернуть" в виде дерева...
Помогите пожалуйста и с этим, если возможно! :)

Или хотя бы накормите полезными линками, чтобы умнее стал (а то навскидку Гугл много воды навыдавал, среди которой не смог отыскать то, что мне нужно)...

Спасибо заранее :)

Blast
23-11-2006, 10:53
defrag
Боюсь, что больше ничем не смогу вас порадовать, по крайней мере мне не удалось добиться то чего вы хотите экспериментами...

defrag
23-11-2006, 11:27
Blast, спасибо и на этом!




© OSzone.net 2001-2012