Продолжение темы. Начало смотрите в выпусках 50 и 54 рассылки. Поскольку трудно правильно ввести все разделы и установки вручную, а использование REG-файлов создаёт затруднения, если каталог Windows отличается от установок в REG-файле, более предпочтительным будет использование INF-файла.
Ниже приведён листинг INF-файла, содержащего необходимые установки. Строки, начинающиеся с символа точки с запятой, - это коментарии. Я добавил много комментариев, чтобы обеспечить понимание текста.
; File: Explore1.Inf
; !!! Работает только в Windows 98
;
; Установите этот скрипт для расширения контекстного меню проводника.
; Если пользователь выберет символ папки правой кнопкой мыши в окне
; проводника или в окне оболочки, то команда "Новое окно проводника"
; появится в контекстном меню. Если выбрать эту команду, то откроется
; новый проводник. Эта возможность может быть удалена в панели
; управления при помощи функции "Установка и удаление программ".
[version]
signature="$CHICAGO$"
SetupClass=BASE
; В процессе установки добавляем информацию в реестр и копируем
; этот файйл в подкаталог INF каталога Windows. Копия необходима
; для процесса удаления.
[DefaultInstall]
AddReg = Explore.AddReg
CopyFiles = Explore.CopyFiles.Inf
; Этот раздел определяет, как удалить устанавливаемую возможность
; (удалить записи в реестре и удалить INF-файл).
; Имя удаляемого раздела определено в разделе [Explore.AddReg]
; в параметре UninstallString
[Explore.AddReg]
; Добавляем глагол "Новое меню" и строку для контекстного меню,
; содержащуюся в переменной %COMMAND_STRING%
HKCR,Folder\shell\newWindow,,,"%COMMAND_STRING%"
; Добавляем глагол, запускающую проводник
HKCR,Folder\shell\newWindow\command,,,%COMMAND%
; Это нужно для установки возможности удаления
HKLM,%UnKEY%,DisplayName,,"%Explore_REMOVE_DESC%"
HKLM,%UnKEY%,UninstallString,,"RunDll32 setupapi.dll,
InstallHinfSection DefaultUninstall 132 Explore1.Inf"
; Эта часть предназначена для удаления и выполнения при удалении.
[DefaultUninstall]
DelReg = Explore.DelReg
DelFiles = Explore.DelFiles.Inf
; Этот раздел удаляет разделы из HKEY_CLASSES_ROOT\Folder\shell,
; предназначенные для расширения оболочки.
[Explore.DelReg]
; Удаляем глагол "Новое окно" и строку для контекстного меню,
; содержащуюся в переменной %COMMAND_STRING%
HKCR,Folder\shell\Новое окно
; Удаляем раздел "Новое окно" в разделе Uninstall.
HKLM,%UnKEY%
; Определяем файлы, которые будут скопированы (каталоги назначения
; и источника определены в следущих разделах).
[Explore.CopyFiles.Inf]
Explore1.Inf
; Определяем файлы, которые будут удалены (каталоги назначения
; и источника определены в следущих разделах).
[Explore.DelFiles.Inf]
Explore1.Inf
Explore1.PNF
; Описание источника (используется путь, по которому INF-файл
; был запущен; 55 определено в разделе SourceDisksFiles).
[SourceDisksNames]
55="Новое окно проводника","",1
[SourceDisksFiles]
Explore1.Inf=55
; Описание каталога назначения.17 - это идентификатор логического
; диска для подкаталога INF каталога Windows.
[DestinationDirs]
Explore.CopyFiles.Inf = 17
Explore.DelFiles.Inf = 17
; Определяем различные строковые переменные.
; Эти переменные использовались в предыдущих командах.
; В процессе установки переменные будут заменены их строковыми
; значениями.
;
; Для этого примера мы определили переменные, содержащие строки
; контекстного меню и имя в списке удаления компонентов.
[Strings]
; Этот раздел содержит два объявления COMMAND, одно из которых
; должно быть зарекомментировано.
; Команда, открывающая окно проводника.
COMMAND = "Explorer.exe /e,/root,/idlist,%I"
; Команда, открывающая окно оболочки.
;COMMAND = "Explorer.exe ,/root,/idlist,%I"
; Строка для контекстного меню
COMMAND_STRING = "Новое окно &проводника"
; Строка для списка удаления компонентов.
EXPLORE_REMOVE_DESC = "Удалить команду Новое окно проводника"
; Строка, определяющая раздел Uninstall.
UnKEY = "Software\Microsoft\Windows\CurrentVersion\Uninstall\Новое окно"
; End ***
Если выбрать этот файл правой кнопкой мыши и затем выбрать команду Установить контекстного меню, то реестр будет изменен. После этого можно выбрать папку или диск правой кнопкой мыши, в контекстном меню должен появиться пункт Новое окно проводника. Этот пункт не дожен присутствовать в контекстном меню для файла.
Если это расширение оболочки не понравилось, то его можно убрать - фактически, наиболее интересная особенность INF-файла - это возможность удаления изменений:
Выберите значок Установка и удаление программ в панели управления и перейдите на вкладку Установка/удаление. Эта вкладка должна содержать запись Удалить команду Новое окно проводника.
Выберите этот пункт и нажмите кнопку Добавить/удалить.
После выполнения этих шагов расширение будет удалено, можно убедиться в этом с помощью редактора реестра.