Настройка оболочки
В предыдущей главе была полностью рассмотрена структура корневого раздела HKEY_CLASSES_ROOT. Структура остальных корневых разделов в этой книге рассматриваться не будет, так как она по своей природе не статична — нельзя точно предположить, какое название параметра решат использовать программисты при написании своего приложения и в какой ветви им захочется его создать. Поэтому структура таких корневых разделов системного реестра, как HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE (за исключением ветви HKEY_LOCAL_MACHINE\SYSTEM), не будет рассматриваться вообще. Вместо этого будут описаны отдельные параметры, которые могут находиться в данных корневых разделах.
При этом стоит еще сказать, что целью создания в этой книге части о реестре было описание параметров реестра, доступ к которым нельзя получить никакими другими стандартными методами, кроме как с помощью реестра. Поэтому тем, кому интересна эта тема, еще раз советуем купить отдельную книгу, посвященную именно этому вопросу.
Значки
Но начнем наконец рассматривать параметры реестра. Для начала будут описаны различные настройки значков файлов или ActiveX-объектов, которые можно изменить в операционной системе Windows XP (эта глава не содержит информации о настройках из корневого раздела HKEY_CLASSES_ROOT).
Изображения
Все уже привыкли к стандартным значкам Windows, таким как значок диска, файла неизвестного расширения, папки и т.д. Но иногда все-таки хочется разнообразия, поэтому сейчас попробуем изменить некоторые стандартные значки, применяемые в операционной системе для файлов расширений. Для этого понадобится ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIcons. Она как раз и содержит список параметров строкового типа, определяющих пути к файлам рисунков, которые будут использоваться при следующем входе в систему для построения изображений стандартных значков. Значения этих строковых параметров определяют путь к файлу изображения, а имя параметра соответствует индексу данного значка в библиотеке shell32.dll (этот индекс указывает на изображение по умолчанию для данного значка). Список всех индексов и соответствующих им значков можно просмотреть в приложении 5. Пока, чтобы не отвлекаться на перелистывание книги, скажем, что для отображения значка дисковода используется значок с индексом 6, для отображения «руки» под общедоступной папкой используется значок с индексом 28, а для отображения значка файлов справки используется значок с индексом 23. Попробуем изменить файлы рисунков для данных индексов.
По умолчанию ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons не присутствует в реестре, поэтому ее придется создать самостоятельно. После этого нужно создать в ней параметр строкового типа, имя которого равно 6 (для значка дисковода), а значение параметра определяет путь к новому файлу рисунка. Аналогично создаются параметры для изменения других значков.
ПРИМЕЧАНИЕ
Не всегда внесенные изменения вступают в силу сразу после перезагрузки — иногда нужно подождать некоторое время, чтобы система внесла изменения в файл shelliconcache (данный файл используется как кэш, содержащий все файлы изображений, используемые для отображения значков в системе). Если же ждать не хочется, то можно попробовать самому удалить этот файл. Для этого нужно в командной строке ввести del shelliconcache или самостоятельно найти данный файл и удалить его (файл является суперскрытым, поэтому, чтобы он отобразился, необходимо установить соответствующий флажок на вкладке Вид диалога Свойства папки).
Кстати, существует также возможность изменения размера этого файла. Для этого предназначен параметр строкового типа Max Cached Icons, расположенный в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer.
На рис. 5.1 можно увидеть результат изменения.
Рис. 5.1. Изменение изображения, используемого для отображения «руки» общедоступных папок и значка дисковода
Другой возможностью, которую предоставляет операционная система Windows, является изменение значков отдельно для каждого логического диска. Это делается с помощью ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons. Ветвь должна содержать разделы, каждый из которых назван в честь буквы логического диска (например, для диска С: создаваемый подраздел должен называться С). Внутри раздела диска могут находиться еще два подраздела. Первый из них называется DefaultIcon — его параметр (По умолчанию) как раз и определяет путь к значку, который будет использоваться для отображения дисков. Второй же подраздел называется DefaultLabel — если он присутствует, то значение его параметра (По умолчанию) определяет название метки данного логического диска, применяемой, если диск не имеет своей собственной метки.
ПРИМЕЧАНИЕ
Не забывайте и о ветви реестра HKEY_CLASSES_ROOT\Applications\explorer.exe\drives\«буква диска»\Defaultlcon, с помощью которой также можно изменить значок для конкретного диска.
Кроме значка и метки диска, операционная система Windows XP позволяет выполнить еще один хакинг — определить, в каком месте названия будет находиться буква логического диска. По умолчанию буква отображается в конце названия, что в некоторых случаях не совсем удобно — буква может скрываться, если название слишком длинное. Поэтому, чтобы исправить этот недостаток, можно воспользоваться DWORD-параметром ShowDriveLettersFirst, расположенным в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer. Он может принимать следующие значения:
■ 1 — установлено по умолчанию, что как раз и соответствует отображению значка диска справа от его метки;
■ 2 — вообще скрывает букву диска из его названия;
■ 4 — буква диска будет отображаться слева от его метки, то есть название, которое раньше отображалось как, например, System (С:), после присвоения данному параметру значения 4 и последующей перезагрузки компьютера будет отображаться как (С:) System.
При выполнении хакинга со значками диска следует учитывать, что если вы в данный момент используете вид Эскизы страниц и описываемый в предыдущем разделе параметр thumbnail для идентификатора диска содержит путь к рисунку, то будет применяться именно рисунок из параметра thumbnail, а не изменяемый значок диска.
Следует также учитывать, что существует еще один параметр, определяющий изображение, которое будет накладываться поверх эскиза папки (если вы будете изменять эскиз для папки с помощью параметра thumbnail). Он находится в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Shell\Bags\AllFolders\Shell и называется Logo (имеет строковый тип). Его значение определяет путь к рисунку, который будет накладываться поверх папки при использовании режима отображения Эскизы страниц.
Раз уж выше была затронута тема эскизов страниц, то мы еще немного поговорим и о них. Параметры отображения эскизов расположены в ветви системного реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer. Эта ветвь может содержать два параметра DWORD-типа, имеющих названия ThumbnailQuality и ThumbnailSize. Первый определяет качество создаваемых системой эскизов страниц и может принимать значения от 50 до 100 (значение по умолчанию — 90). Второй же параметр определяет размер эскизов. Он может принимать значения от 32 до 255 (по умолчанию его значение равно 96).
Теперь несколько слов о настройке цвета названий различных значков операционной системы Windows. Здесь не будет рассказано о том, что можно изменить с помощью диалога Свойства: Экран, поэтому получится не очень много, но тем не менее.
Существует возможность изменения цвета зашифрованных и сжатых файлов в операционной системе Windows. Для этого применяются два параметра REG_BINARY-типа, имеющие следующий формат: 0xR 0xG 0хВ 00, где 0xR определяет красную составляющую цвета, 0xG — зеленую, а 0хВ — синюю (например, значение 00FF0000 определяет зеленый цвет имени файлов соответствующего типа). Эти параметры расположены в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer. Первый из этих параметров называется AltColor и определяет цвет сжатых файлов, а второй — AltEncryptionColor — служит для изменения цвета зашифрованных файлов.
Последний трюк относится к цвету отображения названия определенного ActiveX-объекта. Все дело в том, что в Windows существует возможность указать операционной системе, что название конкретного ActiveX-объекта будет отображаться синим цветом (или цветом, который будет определен вышеописанным параметром AltEncryptionColor). Для этого используется параметр Attributes, расположенный в разделе ShellFolder ветви реестра, определяющей необходимый ActiveX-объект. В предыдущей главе уже рассматривался этот параметр, но еще не упоминалось о такой возможности.
Итак, чтобы отобразить название ActiveX-объекта, расположенное под его значком, синим цветом, достаточно установить данному параметру DWORD-типа битовую маску 0x04000000. Например, чтобы изменить цвет названия значка Панель задач и меню Пуск, расположенного в папке Панель управления, необходимо отредактировать параметр Attributes из ветви реестра HKEY_CLASSES_ROOT\clsid\{0DF44EAA-FF21-4412-828E-260A8728E7F1}\ShellFolder. К сожалению, на черно-белом изображении изменение цвета практически незаметно, поэтому рисунок не приводится.
Можно также заставить систему отобразить название ActiveX-объекта зеленым цветом (или цветом, который будет определен вышеописанным параметром AltColor). Для этого нужно присвоить параметру Attributes битовую маску 0x00002000. Следует только учесть, что в этом случае битовая маска 0x04000000 должна быть сброшена.
Последняя возможность битовой маски Attributes, которая будет рассмотрена, — эффект полупрозрачности значка ActiveX-объекта. Чтобы добиться такого эффекта, нужно присвоить параметру Attributes битовую маску 0x00008000.
ПРИМЕЧАНИЕ
Данный эффект нельзя применить к значку папки Мой компьютер. Существует также одна особенность его применения для значка Корзины — при входе пользователя в систему полупрозрачность для него не применяется, но как только пользователь наведет на значок указатель мыши (и некоторое время подержит на нем), она станет полупрозрачной.
Расположение
Кроме изменения значков различных файлов Windows, существует возможность управления расположением значков на Рабочем столе. Само расположение значков описано в разделе HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop, поэтому если вы уже идеально настроили свой Рабочий стол, то можно запретить полный доступ к этому разделу системе, своей учетной записи и группе, к которой принадлежит ваша учетная запись, оставив только доступ на чтение.
Можно также заставить значок Корзины при следующем входе в систему отображаться в правом нижнем углу. Для этого нужно присвоить DWORD-параметру AdjustRecycleBinPosition значение, равное 1 (рис. 5.2). Он расположен в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ScreenResFixer. После следующего входа в систему Windows, независимо от настроек раздела HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop, отобразит значок Корзины в правом нижнем углу. После этого система изменит значение параметра AdjustRecycleBinPosition на 2 (то есть разрешит изменение расположения значка Корзины). Если же вы не хотите, чтобы расположение этого значка можно было изменить, то следует также запретить полный доступ и к этой ветви реестра, оставив только доступ на чтение.
Рис. 5.2. Расположение значка Корзины
ПРИМЕЧАНИЕ
Есть возможность определить порядок расположения ActiveX-объектов на Рабочем столе. Для этого применяется DWORD-параметр SortOrderIndex, расположенный в разделе ActiveX-объекта ветви реестра HKEY_CLASSES_ROOT\clsid. Например, если значение этого параметра для значка Корзины будет равно 0x00000060, для значка папки Мой компьютер — 0x00000054, а для значка Мои документы — 0x00000048, то на первом месте Рабочего стола будет отображаться Корзина, на втором — Мой компьютер, а на третьем — Мои документы.
Отображение
Еще одной возможностью, которую предоставляет пользователям Windows, является определение тех значков ActiveX-объектов, которые будут отображаться на Рабочем столе, в папках Панель управления и Мой компьютер.
ActiveX-объекты
Для определения тех значков ActiveX-объектов, которые будут отображаться на Рабочем столе, в папках Панель управления и Мой компьютер, применяются следующие ветви реестра.
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace — определяет те из ActiveX-объектов, которые будут отображаться на Рабочем столе. Раздел NameSpace содержит набор дочерних подразделов, названных в честь CLSID-номера ActiveX-объекта, который должен отображаться на Рабочем столе. Например, чтобы отобразить на Рабочем столе значок, вызывающий диалог Запуск программы, необходимо создать в данном разделе подраздел {2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}. Результат можно видеть на рис. 5.3.
Рис. 5.3. Отображение на Рабочем столе значка Запуск программы
Раздел Name Space можно создать в аналогичной ветви корневого раздела HKEY_LOCAL_MACHINE. В этом случае ActiveX-объект будет отображаться на Рабочем столе всех пользователей компьютера, а не только данного пользователя.
ВНИМАНИЕ
Данная ветвь реестра, кроме значков ActiveX-объектов, которые будут отображаться на Рабочем столе, включает в себя еще и определение CLSID-номера {1f4de370-d627-11d1-ba4f-00a0c91eedba}. He удаляйте определение этого номера, так как оно необходимо для корректной работы с функцией поиска и его удаление сделает невозможным использование диалога, вызываемого комбинацией клавиш Windows+F.
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\HideDesktopIcons — если предыдущая ветвь реестра определяла те из значков ActiveX-объектов, которые будут отображаться на Рабочем столе, то эта ветвь устанавливает совершенно противоположную возможность — она указывает на те ActiveX-объекты, которые не будут отображаться на Рабочем столе. При этом можно указать отдельные наборы скрываемых значков в зависимости от типа меню Пуск, используемого в данный момент, ведь данная ветвь хранит два дочерних раздела — ClassicStartMenu и NewStartPanel. Если вы определите CLSID-номера в разделе ClassicStartMenu, то данные значки ActiveX-объектов не будут отображаться на Рабочем столе при использовании классического меню Пуск. Если же вы определите CLSID-номера в разделе NewStartPanel, то данные значки ActiveX-объектов не будут отображаться на Рабочем столе при использовании нового меню Пуск.
Чтобы определить CLSID-номер скрываемого ActiveX-объекта, достаточно в необходимом разделе создать параметр DWORD-типа, названный в честь этого CLSID-номера. Значение параметра должно быть равно 1 (если значение равно 0, то значок ActiveX-объекта будет отображаться). Например, чтобы скрыть значок диалога Запуск программы, который был недавно добавлен, необходимо создать в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu (если используется классическое меню Пуск) параметр DWORD-типа {2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}, значение которого должно быть равно 1.
Данную ветвь можно использовать и в корневом разделе HKEY_LOCAL_MACHINE.
ПРИМЕЧАНИЕ
Существует один интересный CLSID-номер ActiveX-объекта, описания которого вы не встретите в ветви реестра HKEY_CLASSES_ROOT\CLSID. Это CLSID-номер {00000000-0000-0000-0000-000000000000}. Если запретить отображение данного CLSID-номера на Рабочем столе с помощью вышеописанной ветви реестра, то после перезагрузки оболочки на Рабочем столе останутся только значки Корзина и Мой компьютер — остальные ActiveX-объекты, папки и файлы Рабочего стола будут скрыты.
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace — определяет список CLSID-номеров ActiveX-объектов, которые будут отображаться в папке Мой компьютер. Формат данной ветви полностью аналогичен формату описанной выше ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace. Если использовать такую ветвь реестра, расположенную в корневом разделе HKEY_LOCAL_MACHINE, то определяемый ею значок будет отображен для всех пользователей системы.
ПРИМЕЧАНИЕ
Но между приведенными ветвями реестра для различных корневых разделов существует небольшое отличие — ветвь реестра из корневого раздела HKEY_LOCAL_MACHINE также может хранить раздел DelegateFolders, содержимым которого является подраздел {59031a47-3f7244a7-89c5-5595fe6b30ee}. Этот подраздел определяет общие папки, отображаемые в папке Мой компьютер, и если удалить или просто переименовать раздел DelegateFolders, то общие папки в папке Мой компьютер отображаться не будут.
Например, можно попробовать самостоятельно добавить в папку Мой компьютер значок ActiveX-объекта. На этот раз нужно создать свой собственный ActiveX-объект.
Как уже говорилось ранее, для создания уникального CLSID-номера ActiveX-объекта применяется программа guidgen.exe, входящая в стандартную поставку таких компиляторов, как Microsoft Visual Studio .NET, а также Microsoft Visual C++. После запуска данной программы перед вами появится диалог, в котором требуется определить, какой именно уникальный идентификатор нужно создать. Чтобы создать CLSID-номер, необходимо установить переключатель 4. Registry Format. После выбора типа уникального идентификатора нужно выбрать сам созданный идентификатор — нажимайте кнопку Next GUID до тех пор, пока программа не создаст идентификатор, который вам понравится. После этого достаточно нажать кнопку Сору, чтобы поместить этот идентификатор в буфер обмена.
Все, уникальный CLSID-номер у вас уже есть. Например, таким номером является {23D0F57C-5E2C-4fb2-BE50-B27DBD7EFB76}, созданный с помощью программы guidgen.exe. После создания CLSID-номера нужно зарегистрировать его в системе. Для этого используется ветвь системного реестра HKEY_CLASSES_ROOT\CLSID, формат содержимого которой был описан в предыдущей главе. Создайте в этой ветви дочерний раздел, названный в честь CLSID-номера, созданного программой guidgen. Теперь необходимо назвать значок ActiveX-объекта — для этого используется параметр (По умолчанию) созданного раздела. После этого нужно зарегистрировать для созданного ActiveX-объекта значок, с этой целью применяется параметр DefaultIcon дочернего раздела ветви созданного CLSID-номера. После создания значка нужно скрыть все стандартные команды его контекстного меню — для этого присвойте DWORD-параметру Attributes значение 0. Он должен находиться в разделе ShellFolder ветви созданного CLSID-номера. И наконец, можно создавать содержимое пользовательского контекстного меню — для этого используется раздел shell ветви CLSID-номера. Создайте в нем необходимые глаголы, а в них — подраздел command, параметр (По умолчанию) которого и будет определять команду, вызываемую при выборе из контекстного меню вашего значка соответствующего действия.
Теперь у вас есть не только уникальный CLSID-номер, но и свой собственный ActiveX-объект. Осталось только создать подраздел {23D0F57C-5E2C-4fb2-BE50-B27DBD7EFB76} в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace и смотреть на то, что получилось (рис. 5.4).
Рис. 5.4. Создание своего ActiveX-объекта и расположение его в папке Мой компьютер
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\HideMyComputerIcons — скрывает значки из папки Мой компьютер. Ее формат аналогичен формату уже описанной ветви системного реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\HideDesktopIcons, поэтому рассматривать ее мы не будем. Эту ветвь можно использовать и в корневом разделе HKEY_LOCAL_MACHINE.
Например, чтобы скрыть только что созданный значок ActiveX-объекта из паки Мой компьютер, необходимо создать DWORD-параметр {23D0F57C-5E2C-4fb2-BE50-B27DBD7EFB76} и присвоить ему значение, равное 1. Создавать его нужно в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideMyComputerIcons.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace — содержит ссылки на те ActiveX-объекты, значки которых будут отображаться в папке Панель управления. Его формат аналогичен формату описанных выше разделов реестра, предназначенных для добавления значков ActiveX-объектов.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\NetworkNeighborhood\NameSpace — определяет те ActiveX-объекты, значки которых будут отображаться в папке Сетевое окружение. Его формат аналогичен формату описанных выше разделов реестра, предназначенных для добавления значков ActiveX-объектов.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace — определяет те ActiveX-объекты, значки которых будут отображаться в папке Удаленные компьютеры. Его формат аналогичен формату описанных выше разделов реестра, предназначенных для добавления значков ActiveX-объектов.
По умолчанию в этой ветви реестра присутствуют только ссылки на ActiveX-объекты Принтеры и Назначенные задания. Если вы как администратор не хотите, чтобы эти ActiveX-объекты отображались в папке удаленного компьютера, то можно их удалить.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\NonEnum — раздел более категоричен, чем все рассмотренные ранее, — он определяет те из ActiveX-объектов, которые вообще не будут отображаться в оболочке пользователей (или конкретного пользователя, если применяется ветвь из корневого раздела HKEY_CURRENT_USER). Все ActiveX-объекты, описанные в этой ветви, не будут применяться при построении пользовательского интерфейса.
Чтобы запретить использование какого-либо ActiveX-объекта, достаточно создать в данной ветви реестра параметр DWORD-типа, названный в честь CLSID-номера скрываемого ActiveX-объекта, и присвоить ему значение, равное 1.
Хотелось бы сказать еще об одной недокументированной возможности скрытия ActiveX-объекта из всех мест оболочки, где он используется, — о параметре Attributes, находящемся в подразделе ShellFolder раздела скрываемого нами ActiveX-объекта. Содержимое данного параметра уже было описано в предыдущей главе, но не упоминалось об этой возможности.
Итак, чтобы скрыть значок ActiveX-объекта, достаточно его параметру Attributes присвоить битовую маску 0x00100000.
Скрытие CPL-файлов
Кроме скрытия ActiveX-объектов, существует еще и возможность скрытия CPL-файлов из содержимого окна Панель управления. Для этого могут применяться две стандартные ветви реестра Windows, первой из которых является ветвь реестра HKEY_CURRENT_USER\Control Panel\don't load. Она может хранить список параметров строкового типа, названных в честь CPL-файлов, значения которых не важны. Все CPL-файлы, чьи имена описаны в качестве параметров ветви HKEY_CURRENT_USER\Control Panel\don't load, не будут отображаться в Панели управления. Например, чтобы скрыть апплет Мышь, необходимо в данной ветви реестра создать параметр строкового типа main.cpl (будет также скрыт апплет Клавиатура).
Предыдущая ветвь имеет один существенный недостаток применения — пользователь может удалить все созданные вами параметры. Если же вы не хотите, чтобы он мог это сделать, то нужно запретить полный доступ к данной ветви реестра, оставив только доступ на чтение. Можно просто воспользоваться другой ветвью реестра — HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\don't load. Она имеет такой же формат, что и предыдущая ветвь, но скрывает апплеты Панели управления для всех пользователей системы.
Другие возможности
Теперь рассмотрим другие возможности реестра, которые можно использовать в своей системе.
■ Чтобы при создании ярлыка файла к его названию не добавлялся префикс Ярлык для, необходимо присвоить параметру REG_BINARY-типа link значение 0. Он расположен в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer (можно также использовать корневой раздел HKEY_LOCAL_MACHINE).
■ Еще одной возможностью, которую предоставляет пользователю Windows, является определение области вокруг значка, в пределе которой его перемещение не будет считаться перемещением как таковым — значок вернется на свое прежнее место (довольно часто при быстром двойном щелчке на значке можно его случайно переместить, что может испортить весь стиль оформления Рабочего стола). Для этого используются два параметра строкового типа, расположенных в ветви реестра HKEY_CURRENT_USER\Control Panel\Desktop. Первый из этих параметров называется DragHeight и определяет расстояние в пикселах, в пределах которого перемещение значка или окна по вертикали не приводит к перетаскиванию. Например, если значение этого параметра равно 35, то при перемещении значка на 35 пикселов вверх/вниз он останется на своем прежнем месте. Второй параметр называется DragWidth — определяет расстояние в пикселах, в пределах которого перемещение значка или окна по горизонтали не приводит к перетаскиванию.
Проводник
Стандартные окна операционной системы являются еще одним элементом оболочки Windows, нестандартные настройки которого могут быть интересны. Окна имеют не много параметров настройки, доступ к которым нельзя получить из пользовательских диалогов, но все-таки эти параметры стоят того, чтобы о них написать.
Оформление
В стандартной поставке операционная система Windows имеет довольно строгий стиль оформления. Это можно заметить уже при первом взгляде на панель инструментов и меню окон Проводника. Уже стало стандартом то, как данные элементы окна выглядят, и кажется, что любой другой стиль оформления данных элементов будет неправильным и излишним. Но так ли это? Попробуйте изменить элементы оформления окна, а через некоторое время решите, оставить ли эти изменения в системе. Для себя автор данной книги уже решил — обязательно оставить, так как с некоторых пор стандартный стиль оформления окон ему кажется просто ужасным.
Итак, что же можно изменить? Всем известен трюк с изменением фона панели инструментов. Для его реализации понадобится один параметр строкового типа и одна ветвь реестра. Возьмем ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\ Internet Explorer\Toolbar. Чтобы изменить рисунок фона панели инструментов для Проводника, достаточно создать в этой ветви строковый параметр BackBitmapShell и присвоить ему путь к файлу рисунка, который будет использоваться для отображения в качестве фона.
Теперь, если стандартный логотип Microsoft не подходит по цвету или стилевому оформлению к только что измененной панели инструментов, можно изменить и его. Для этого используется та же ветвь реестра, что и при изменении фона панели инструментов, — HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar. Но теперь вам понадобятся сразу два строковых параметра — один для указания пути к файлу рисунка, используемого для отображения логотипа Microsoft при обычном виде Проводника, а второй — для указания пути к файлу рисунка, используемого при полноэкранном виде Проводника (после нажатия клавиши F11). Первым из этих параметров является параметр строкового типа SHBigBitMap. Вторым — параметр строкового типа SHSmallBitMap.
ВНИМАНИЕ
Кроме того, нужно изменить значения параметров строкового типа BrandBitMap, а также SmBrandBitMap, которые расположены в той же ветви реестра, что и описываемые параметры. Пока что просто присвойте им те же значения, что и параметрам SHSmallBitMap и SHBigBitMap — о них будет рассказано позже. Если не изменить значения параметров BrandBitMap и SmBrandBitMap, то изменить логотип Проводника не получится.
На рис. 5.5 можно увидеть, что получилось.
Рис. 5.5. Изменение логотипа и фона панели инструментов
ПРИМЕЧАНИЕ
Еще одной возможностью, которую позволяет выполнить оболочка, является уменьшение значка логотипа. Для этого применяется DWORD-параметр BrandHeight, расположенный в указанной ветви реестра. Если его значение равно 50 или меньше, то будет использоваться стандартный размер логотипа, а если значение от 60 до 800, то уменьшенный.
Операционная система Windows позволяет выполнить еще один хакинг — увеличение высоты панели инструментов. Для этого опять-таки применяется ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar. Чтобы увеличить высоту панели инструментов, достаточно создать в этой ветви реестра DWORD-параметр SmBrandHeight и присвоить ему значение, равное количеству пикселов, на которое вы хотели бы увеличить панель инструментов. Например, на рис. 5.6 можно увидеть то же изображение, что и на рис. 5.5, но с использованием параметра SmBrandHeight, значение которого равно 50.
Рис. 5.6. Увеличение размера панели инструментов
Стандартные папки Windows
Еще одной возможностью, которая вам может быть интересна, является изменение путей к стандартным папкам Windows, таким как Мои документы, Избранное, Моя музыка, Program Files и т.д. Для реализации этой возможности используется несколько ветвей реестра, но большая часть параметров, определяющих пути к папкам, без сомнения, находится в ветви реестра HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\Explorer\Shell Folders. Вот именно с содержимого данной ветви нужно начинать (все параметры этой ветви имеют тип REG_SZ).
ПРИМЕЧАНИЕ
В реестре Windows существует ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders, определяющая путь к папкам, применяемым всеми пользователями, а не конкретным.
■ Administrative Tools — определяет путь к папке Администрирование, содержимое которой используется для построения одноименной ветви меню Пуск.
■ AltStartup — хранит путь к папке, содержимое которой будет запускаться при входе пользователя в систему. Разница между данным параметром реестра и параметром Startup состоит в том, что ссылки из каталога, определяемого параметром AltStartup, не отображаются на вкладке Автозагрузка программы msconfig.exe.
■ AppData — определяет расположение каталога Application Data, который используется различными приложениями для хранения своих данных.
■ Cache — указывает путь к папке Temporary Internet Files, используемой браузером Internet Explorer для хранения частей загружаемых документов.
■ CD Burning — определяет путь к папке, используемой стандартной программой записи компакт-дисков для хранения самих компакт-дисков и необходимой информации (каталог CD Burning, содержащийся в подкаталоге Microsoft каталога Application Data).
■ Cookies — хранит путь к папке Cookies, используемой браузером Internet Explorer.
■ Desktop — определяет путь к папке Рабочий стол, содержащей все файлы, которые расположены на Рабочем столе текущего пользователя.
■ Favorites — указывает путь к папке Избранное, используемой Internet Explorer для хранения ссылок на избранные страницы пользователя.
■ Fonts — определяет путь к папке Шрифты, содержащей все шрифты, установленные на компьютере. Доступ к данной папке можно также получить с помощью ActiveX-объекта {D20EA4E1-3957-11d2-A40B-0C5020524152}.
■ History — хранит путь к папке History, содержимое которой используется для формирования журнала всех сайтов, которые посещались пользователем в те чение последних двух недель.
■ Local AppData — содержит тот же путь, что и параметр AppData.
■ Local Settings — указывает путь к папке Local Settings, содержимым которой являются папки, определяемые параметрами AppData, History, Cache.
■ My Music — определяет путь к папке, которая будет использоваться такими программами, как, например, Проигрыватель Windows Media, для копирования в них музыкальных файлов.
■ My Pictures — хранит путь к папке Мои рисунки.
■ My Video — определяет путь к папке Мое видео.
■ NetHood — указывает путь к папке NetHood, содержащей ссылки на сетевые папки, к которым вы получали доступ в последнее время.
■ PrintHood — определяет путь к папке PrintHood, содержащей ссылки на сетевые принтеры, к которым вы получали доступ в последнее время.
■ Personal — хранит путь к папке Мои документы. Конечно, местоположение папки Мои документы можно определить и с помощью диалога Свойства, но посредством данного параметра можно, например, указать логический диск в качестве папки Мои документы.
■ Programs — определяет путь к папке Программы, содержимое которой используется для построения ветви Программы меню Пуск. Данную папку можно также вызвать с помощью ActiveX-объекта {7be9d83c-a729-4d97-b5a7-1b7313c39e0a}. При этом вы сможете просмотреть не только программы меню Пуск, отображаемые для вашей учетной записи, но и программы, отображаемые для всех учетных записей.
■ Recent — хранит путь к папке Recent, содержащей ссылки на все файлы и папки, к которым вы получали доступ в последнее время.
■ SendTo — определяет путь к папке SendTo, содержимое которой используется для построения списка Отправить контекстного меню файлов и папок.
■ Start Menu — указывает путь к папке Главное меню, содержимое которой отображается в виде разделов меню Пуск.
■ Startup — хранит путь к папке Автозагрузка, содержимое которой используется для построения соответствующей ветви меню Пуск. В отличие от папки, определяемой параметром AltStartup, содержимое этой папки можно просмотреть с помощью вкладки Автозагрузка программы msconfig.exe.
■ Templates — определяет путь к папке Templates. Содержимое именно этой папки определяет те файлы шаблонов, которые будут создаваться после выбора соответствующей команды из списка Создать диалога контекстного меню Рабочего стола или Проводника, если для создания файла используется параметр реестра FileName (он содержится в корневом разделе HKEY_CLASSES_ROOT и описывался в предыдущей главе).
ПРИМЕЧАНИЕ
Если вы хотите удалить какой-нибудь параметр из приведенной выше ветви реестра, то необходимо будет удалить его также из ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders, иначе через некоторое время он будет создан заново. Следует также учитывать, что лучше не удалять полностью параметры приведенной ветви реестра — лучше просто удалить их значения.
Другой ветвью, которая содержит некоторые пути к стандартным папкам Windows, является ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Для описания пути к таким папкам используются следующие параметры.
■ WallPaperDir — определяет путь к папке, содержимое которой используется при построении списка Фоновый рисунок вкладки Рабочий стол диалога Свойства: Экран. Он является параметром REG_EXPAND_SZ-типа.
■ SM_GamesName — этот параметр строкового типа указывает название папки, содержимое которой будет использоваться при построении соответствующего списка меню Пуск (по умолчанию списка Игры). В дальнейшем именно к этой папке будут обращаться программы при попытке записи в список Игры новых элементов.
■ SM_AccessoriesName — параметр строкового типа, определяет название папки, содержимое которой будет использоваться при построении соответствующего списка меню Пуск (по умолчанию списка Стандартные). В дальнейшем именно к этой папке будут обращаться программы при попытке записи в список Стандартные новых элементов.
Некоторые пути к стандартным каталогам можно встретить в ветви реестра Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup.
■ DriverCachePath — определяет путь к папке Driver Cache, используемой для хранения резервных копий всех системных библиотек и программ операционной системы Windows. Если вы пользуетесь несколькими операционными системами Windows XP, то можно в каждой из них указать путь к общей папке, в которой будут храниться все резервные копии библиотек, используемых всеми операционными системами Windows XP.
■ SourcePath — хранит путь к папке, содержащей установочные файлы текущей операционной системы. По умолчанию он определяет букву дисковода, с которого вы устанавливали операционную систему, и именно к этому дисководу система обращается, когда ей необходимо установить дополнительные компоненты. Если дистрибутив вашей операционной системы хранится у вас на жестком диске, то в этом параметре можно описать путь к нему (в этом случае нужно будет присвоить DWORD-параметру CDInstall данной ветви реестра значение, равное 0). Теперь при необходимости установки дополнительных компонентов Windows будет всегда обращаться к папке дистрибутива на вашем жестком диске, не мучая вас просьбой вставить диск дистрибутива в привод компакт-дисков.
■ ServicePackSourcePath — определяет путь к папке, которая содержит файлы установленного на вашем компьютере пакета обновлений. Именно к этой папке Windows обращается, если ей необходимо заново установить файлы пакета обновлений (например, если оригинальные версии файлов изменены или удалены).
Конфигурация
Теперь рассмотрим несколько параметров строкового типа, предназначенных для настройки конфигурации Проводника.
■ MenuShowDelay — определяет задержку перед отображением меню, которую оболочка будет ожидать. Он расположен в ветви реестра HKEY_CURRENT_USER\Control Panel\Desktop. По умолчанию его значение равно 400.
■ BrowseNewProcess — определяет, будет ли открываться каждое окно Проводника и браузера Internet Explorer в виде отдельного процесса или все они будут открываться как часть одного процесса. Если значение этого параметра равно YES, то каждое окно Проводника и браузера Internet Explorer будет открываться как отдельный процесс. Плюсом этого метода можно считать большую стабильность — если возникнет ошибка в работе одного окна Проводника, то оно закроется, но остальные окна останутся рабочими. Если же значение равно NO, то все окна Проводника и браузера Internet Explorer будут открываться как часть оболочки. Этот метод имеет как минусы, так и плюсы. К минусам можно отнести невысокую стабильность работы системы по сравнению с предыдущим методом — если возникнет ошибка в одном из окон Проводника или браузера, то будут закрыты все открытые окна и начнется перезагрузка самой оболочки Windows. К плюсам же можно причислить меньший размер занимаемой оперативной памяти при открытии нескольких окон, а также более быстрое открытие каждого нового окна Проводника или браузера.
Параметр расположен в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess.
Диалоги
Еще одной возможностью, которую предоставляет пользователям Windows, является редактирование различных списков стандартных диалогов операционной системы, а также скрытие некоторых вкладок диалогов без использования групповых политик и консоли управления безопасностью. Например, операционная система позволяет редактировать содержимое списка Дополнительные параметры на вкладке Вид диалога Свойства папки или содержимое списка Параметры на вкладке Дополнительно диалога Свойства: Интернет.
Содержимое списков
Для формирования содержимого некоторых списков стандартных диалогов Windows используется ряд стандартных параметров (о ветвях, используемых для формирования списков стандартных диалогов, будет рассказано чуть позже). Эти параметры создаются в дочерних папках ветвей (одна папка — один элемент списка), формирующих конкретные списки диалогов.
■ Text — этот параметр строкового типа определяет текст надписи, отображаемой в соответствующем списке диалога. Надпись находится напротив подкаталога или флажка, который она идентифицирует.
■ HKeyRoot — параметр DWORD-типа, указывает корневой раздел реестра, в котором находится параметр, изменяющийся при смене состояния соответствующе
го флажка или переключателя. Параметр может принимать следующие значения:
• 0x80000000 — находится в корневом разделе HKEY_CLASSES_ROOT;
• 0x80000001 — хранится в корневом разделе HKEY_CURRENT_USER;
• 0x80000002 — находится в корневом разделе HKEY_LOCAL_MACHINE;
• 0x80000003 — хранится в корневом разделе HKEY_USERS.
■ ValueName — этот параметр строкового типа определяет название параметра, который будет меняться при изменении состояния соответствующего флажка или переключателя.
■ RegPath — указывает остальной путь к ветви реестра, в которой будет находиться параметр, изменяющийся при смене состояния соответствующего флажка или переключателя. Как видите, этим и двумя предыдущими параметрами можно задать полный путь к параметру, значение которого будет изменяться соответствующим элементом списка. Параметр имеет строковый тип.
■ DefaultValue — определяет значение по умолчанию изменяемого описываемым элементом списка параметра. Это значение используется в том случае, когда в указанной ветви реестра не существует параметр, значение которого изменяется данным элементом списка. Тип параметра DefaultValue зависит от типа изменяемого данным элементом списка параметра. Например, если изменяемый параметра имеет тип REG_SZ, то и параметр DefaultValue будет иметь тип REG_SZ.
■ CheckedValue — хранит значение, которое будет присвоено изменяемому параметру после установки соответствующего флажка или переключателя и нажатия кнопки Применить. Тип параметра CheckedValue, так же как и в предыдущем случае, зависит от типа параметра, изменяемого данным элементом списка.
■ UncheckedValue — если предыдущий параметр определял значение изменяемого параметра при установке флажка или переключателя, то UncheckedValue определяет значение изменяемого параметра при снятом флажке (естественно, что при создании переключателя этот параметр не используется, так как переключатель не может быть снятым). Тип параметра UncheckedValue, так же как и тип двух предыдущих параметров, зависит от типа параметра, изменяемого данным элементом списка.
■ Bitmap — этот параметр строкового типа определяет путь к файлу рисунка, используемого для отображения подпапки в списке. К сожалению, нет никакой возможности изменить рисунок флажка или переключателя с помощью данного параметра.
■ Mask — если в разделе, определяющем соответствующий элемент списка, присутствует этот параметр DWORD-типа, то изменяемый параметр является битовой маской и система должна не переписать параметр заново, а просто изменить один из его битов — именно битовая маска этого бита и указывается в данном параметре.
■ Туре — этот параметр строкового типа определяет, какой именно элемент списка будет создан. Если значение этого параметра равно group, то будет создана подпапка. Если значение равно checkbox, то будет создан флажок, а если значение равно radio, то в списке появится переключатель.
Вот и все параметры, используемые системой для формирования одного элемента списка некоторых стандартных диалогов. Теперь перечислим все те ветви реестра, в которых могут находиться приведенные выше параметры, а также те диалоги, спискам которых они соответствуют.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced — определяет содержимое списка Дополнительные параметры вкладки Вид диалога Свойства папки.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects — хранит содержимое списка Особые эффекты, отображаемого на вкладке Визуальные эффекты диалога Параметры быстродействия. Чтобы отобразить этот диалог, необходимо нажать кнопку Параметры, расположенную на вкладке Дополнительно диалога Свойства системы.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions — определяет содержимое списка Параметры вкладки Дополнительно диалога Свойства: Интернет.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartMenu — хранит содержимое списка Дополнительные параметры меню "Пуск" диалога Настройки классического меню "Пуск". Чтобы вызвать данный диалог, необходимо нажать кнопку Настроить, расположенную напротив переключателя Классическое меню "Пуск" на вкладке Меню "Пуск" диалога Свойства панели задач и меню "Пуск".
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartMenu\StartPanel — определяет содержимое списка Элементы меню "Пуск", расположенного на вкладке Дополнительно диалога Настройка меню "Пуск". Чтобы вызвать данный диалог, необходимо нажать кнопку Настроить, расположенную напротив переключателя Меню "Пуск" на вкладке Меню "Пуск" диалога Свойства панели задач и меню "Пуск".
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\SO — хранит содержимое списка Параметры диалога Параметры безопасности. Этот диалог можно вызвать с помощью нажатия кнопки Другой на вкладке Безопасность диалога Свойства: Интернет браузера Internet Explorer. Аналогичные настройки можно встретить в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\SOIEAK.
Например, можно добавить свой элемент списка в один из диалогов, чтобы больше не искать его в реестре при необходимости модификации (рис. 5.7).
Рис. 5.7. Добавление своих элементов списка диалогового окна
Скрытие вкладок и других элементов диалогового окна
Теперь поговорим о параметрах реестра Windows, предназначенных для скрытия различных вкладок стандартных диалогов. В данном разделе книги не будут упоминаться параметры, используемые консолью mmc.exe, — этому посвящена отдельная глава книги. Сейчас же будут рассмотрены параметры, используемые самой операционной системой, хотя их не так уж и много.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime — содержит сведения о серверах, используемых для синхронизации системных часов с указанным сервером времени. Но, кроме этого, она может хранить DWORD-параметр Support Internet Time. Если его значение равно 0, то из диалога Дата и время исчезнет вкладка Время Интернета, которая применяется для настройки синхронизации системного времени с сервером Интернета.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig — определяет настройки стандартной программы msconfig. Одним из параметров этой ветви может быть DWORD-параметр boot.ini. Если он действительно содержится в приведенной ветви реестра, то из программы msconfig.exe исчезнет вкладка BOOT.INI, предназначенная для облегчения создания данного файла в мультизагрузочных системах.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\«название программы» — хранит всю информацию, необходимую для построения элемента списка апплета Установка и удаление программ, определяемого разделом «название программы». Но здесь не будут перечислены те параметры реестра, которые могут находиться в приведенной выше ветви. Намного интереснее рассмотреть несколько параметров данной ветви, с помощью которых можно заблокировать те или иные кнопки для соответствующего элемента списка.
• NoRemove — параметр DWORD-типа определяет, будет ли для соответствующей программы в списке апплета Установка и удаление программ отображаться кнопка Удалить. Если значение данного параметра равно 1, то для элемента списка, определяющего программу, кнопка Удалить отображаться не будет.
• NoModify — этот параметр DWORD-типа определяет, будет ли для соответствующей программы в списке апплета Установка и удаление программ отображаться кнопка Изменить. Если значение данного параметра равно 1, то для элемента списка, определяющего программу, кнопка Изменить отображаться не будет.
• NoRepair — данный параметр DWORD-типа определяет, будет ли для соответствующей программы в списке апплета Установка и удаление программотображаться кнопка Восстановить. Если значение данного параметра равно 1, то для элемента списка, определяющего программу, кнопка Восстановить отображаться не будет.
ВНИМАНИЕ
Несмотря на то, что кнопка Удалить скрыта из диалога Установка и удаление программ, программу по-прежнему можно будет удалить с помощью команды rundll32.exe appwiz.cpl, WOW64Uninstall_RunDLL , , , «название раздела программы в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall».
Другие возможности
Здесь будут рассмотрены другие параметры операционной системы Windows XP, которые не используются для настройки конфигурации значков или окон Windows, но тем не менее могут быть вам интересны.
■ HKEY_CURRENT_USER\Control Panel\Desktop — довольно интересной возможностью, которую позволяет выполнить операционная система Windows XP, является вывод сведений о версии Windows XP в правом нижнем углу экрана Рабочего стола. Для ее реализации достаточно присвоить DWORD-параметру PaintDesktopVersion значение, равное 1 (рис. 5.8).
Другой возможностью, которую предоставляет пользователям операционная система Windows, является вывод обоев Windows, начиная с определенной точки экрана. Для этого используются два параметра строкового типа WallpaperOriginX и WallpaperOriginY. Первый из них определяет смещение левой стороны рисунка обоев от левой стороны экрана. Второй же параметр определяет смещение верхней стороны рисунка обоев от верхней стороны экрана.
Рис. 5.8. Отображение версии Windows в правом нижнем углу экрана
С помощью данной ветви реестра можно проделать другой трюк — изменение количества строк и столбцов в выводимом после нажатия комбинации клавиш Alt+Tab диалоге. Для этого применяются два параметра строкового типа CoolSwitchRows и CoolSwitchColumns. Первый из них определяет количество строк в диалоге, а второй — количество столбцов. Например, на рис. 5.9 можно увидеть результат присвоения этим параметрам значений 3 и 3 (чтобы изменения вступили в силу, необходима перезагрузка компьютера или выход из системы — обычный перезапуск оболочки Windows не поможет).
Рис. 5.9. Изменение количества строк и столбцов диалога
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey — содержит команды, которые будут выполняться при нажатии дополнительных клавиш клавиатуры, таких, например, как My Computer, Calculator, E-mail, Stop и т.д. Не секрет, что не всегда функциональная возможность данных клавиш может быть необходима, например, если у вас нет доступа к Интернету, зачем вам такие клавиши быстрого доступа, как Refresh, Forward, Back, Home? Поэтому предлагаю переопределить команды, вызываемые соответствующими клавишами, чтобы они вызывали вашу любимую игру или программу.
Для этого необходимо определить формат содержимого приведенной выше ветви реестра — в ней хранятся разделы, названия которых определяют числовые идентификаторы, присвоенные клавишам быстрого доступа. А уже в этих разделах располагается параметр строкового типа ShellExecute — именно в нем находится команда, которая будет выполняться при нажатии соответствующей клавиши быстрого доступа.
Структура ветви реестра рассмотрена. Осталось только определить идентификаторы клавиш и названия самих клавиш, которые им соответствуют:
• 1 — Back (определяет кнопку Назад в окне браузера);
• 2 — Forward (указывает кнопку Вперед в окне браузера);
• 3 — Refresh (определяет кнопку Обновить в окне браузера);
• 4 — Stop (указывает кнопку Стоп в окне браузера);
• 5 — Search (аналогична комбинации клавиш Windows+F);
• 6 — Favorites (определяет кнопку Избранное в окне браузера);
• 7 — Home (указывает кнопку Домой в окне браузера);
• 8 — Mute (отключает звук в проигрывателе, назначение данной клавиши переопределить нельзя);
• 15 — E-mail (аналогична вызову программы Outlook Express);
• 16 — Media (аналогична вызову программы, ассоциированной с расширением CDA (по умолчанию Проигрыватель Windows Media));
• 17 — My Computer (аналогична вызову окна Мой компьютер);
• 18 — Calculator (аналогична вызову программы calc.exe).
Например, чтобы присвоить дополнительной клавише Back команду, открывающую вашу папку с играми, допустим D:\Games, нужно присвоить параметру ShellExecute, расположенному в ветви реестра HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\1, значение, равное explorer /root, d:\games.
ПРИМЕЧАНИЕ
После изменения команд некоторых функциональных клавиш у них появляется двойной набор команд. Чтобы показать это на примере, достаточно изменить команду клавиши, открывающей программу Outlook Express. Теперь если вы нажмете эту клавишу при установке фокуса на окне какой-либо папки, то по-прежнему откроется окно Outlook Express. Но если вы нажмете клавишу, когда фокус установлен на Рабочем столе или окне другой программы, то выполнится та команда, которую вы заложили в эту клавишу с помощью ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Explorer\AppKey.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths — определяет все те команды, которые вы вводите в диалоге Запуск программы, чтобы открыть необходимую программу, расположенную в каталогах, отличных от %systemroot%\system32 и %systemroot%. Например, если у вас на компьютере установлен графический пакет Adobe Photoshop, то для его вызова из диалога Запуск программы вы используете команду Photoshop. И, несмотря на то, что, скорее всего, данный пакет установлен в одном из разделов ветви %programfiles%, команда Photoshop все равно открывает его окно.
Такой феномен возможен лишь потому, что в приведенной выше ветви реестра существует раздел, имеющий название photoshop.exe (все разделы приведенной ветви реестра должны оканчиваться расширением EXE, иначе определяемые ими псевдонимы команд работать не будут). В этом разделе существует параметр (По умолчанию), хранящий путь к программе, которая будет запускаться после ввода соответствующего ей псевдонима в диалоге Запуск программы.
Что вам дает знание данной ветви реестра? Ну, если пофантазировать, то можно изменить название раздела photoshop.exe на, допустим, ph.exe. Теперь вы сможете вызвать программу Photoshop вводом всего двух символов.
Можно создать свой собственный псевдоним для любимой программы. Для этого нужно просто создать новый раздел с любым названием (не забывайте, что раздел должен оканчиваться расширением EXE) в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ App Paths. После этого в параметре (По умолчанию) созданного раздела нужно определить путь к своей любимой программе.
ПРИМЕЧАНИЕ
Некоторые программы, кроме создания псевдонима, могут содержать в приведенной выше ветви реестра и другие параметры. Например, в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\setup.exe (принадлежит программе установки других приложений) может находиться DWORD-параметр RunAsOnNonAdminInstall. Если его значение равно 1, то при каждом запуске программы Setup.exe для установки какой-нибудь программы пользователем, не имеющим на это привилегий, будет выводиться диалог Запуск от имени, в котором можно зарегистрироваться под учетной записью, имеющей права на установку программ в системе.
Точно такой же параметр может храниться в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\winnt32.exe, а также в ветви HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\install.exe.
Есть и еще один общий для всех разделов параметр строкового типа — RunAsCommand. Если он присутствует в разделе и его значение равно, допустим, 0, то ни один пользователь не сможет запустить программу, определяемую данным псевдонимом. Имеется в виду, что не сможет запустить не только из диалога Запуск программы, но и с помощью ярлыков или самого файла программы (можно только с помощью консоли cmd.exe).
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced — может содержать один интересный параметр DWORD-типа, который называется NewDragImages. Он может принимать значения 0 или 1. В зависимости от используемого значения вы сможете увидеть одно из изображений, приведенных на рис. 5.10 (рисунок слева создан при копировании пункта меню Пуск на Рабочий стол с использованием значения параметра, равного 1, а рисунок справа создан при использовании значения, равного 0).
Рис. 5.10. Изменение способа отображения копируемого файла
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer — мы с вами уже рассматривали содержимое раздела NameSpace этой ветви реестра, но, кроме него, ветвь корневого раздела HKEY_LOCAL_MACHINE имеет еще три раздела: BackupPath, cleanuppath и DefragPath. Все эти ветви включают в себя параметр (По умолчанию), значение которого определяет команду, выполняющуюся при нажатии той или иной кнопки на вкладке Сервис диалога Свойства: Диск (параметр первого раздела определяет команду кнопки Выполнить архивацию, второго — Выполнить проверку, а третьего — Выполнить очистку).
Например, если присвоить параметру (По умолчанию) раздела BackupPath значение, допустим, cmd.exe, то после нажатия кнопки Выполнить архивацию перед вами отобразится командный процессор cmd.exe. Конечно, пример с программой cmd.exe не совсем удачен, но если вы используете для перечисленных выше действий программы сторонних производителей, то именно их вызов можно присвоить параметрам (По умолчанию) разделов BackupPath, cleanuppath и DefragPath.
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FindExtensions\Static — определяет содержимое пункта Найти меню Пуск. Оно строится в следующем формате: сначала идет набор разделов, каждый из которых определяет одну команду меню Пуск. Например, в приведенной ветви реестра могут находиться следующие разделы:
• ShellSearch — определяет команду Файлы и папки пункта Найти меню Пуск;
• WabFind — задает команду Людей пункта Найти меню Пуск;
• WebSearch — определяет команду В Интернете пункта Найти меню Пуск.
Параметр (По умолчанию) каждого из этих разделов определяет ActiveX-объект, который обрабатывает выбор соответствующей команды из пункта Найти меню Пуск. Кроме этого параметра, разделы могут содержать другие разделы, названия которых определяются в формате 0, 1, 2, 3. Параметр (По умолчанию) каждого из этих разделов определяет соответствующую строку названия (если в разделе не существует параметра строкового типа LocalizedString, значение которого, как известно, всегда переопределяет параметр (По умолчанию)). При этом только значение параметра (По умолчанию) раздела 0 может отображаться в качестве названия команды пункта Найти меню Пуск. Каждый из разделов 0, 1, 2…, в свою очередь, должен содержать подраздел, который называется DefaultIcon. Параметр (По умолчанию) этого подраздела определяет значок, отображаемый напротив названия команды пункта Найти меню Пуск.
Зачем же все это нужно? Во-первых, для того, чтобы удалить ненужные команды пункта Найти меню Пуск. Во-вторых, что уже интересней, чтобы добавить свои команды к данному меню. Например, попробуйте добавить к данному меню команду вызова апплета Установка и удаление программ. Для этого нужно создать раздел с любым именем в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FindExtensions\Static и его параметру (По умолчанию) присвоить значение {2559A1F7-21D7-11D4-BDAF-00C04F60B9F0}. После этого нужно создать дочерний раздел 0 и его параметру (По умолчанию) присвоить строку названия, например незамысловатое Установка и удаление программ. И наконец, в параметре (По умолчанию) подраздела DefaultIcon, который должен быть создан в дочернем разделе, нужно определить путь к файлу рисунка, используемого в качестве значка (рис. 5.11).
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileAssociation — раз уж чуть выше речь зашла о меню Пуск, то поговорим еще о двух параметрах строкового типа, предназначенных для выполнения конфигурации нового меню Пуск, — AddRemoveApps и AddRemoveNames. Первый из них определяет имена программ (пишутся через точку с запятой), которые не будут помещаться в новое меню Пуск, сколько бы их ни вызывали. Второй же содержит части названия имен файлов, ссылки на которые не будут помещаться в новое меню Пуск, сколько бы их ни вызывали.
Рис. 5.11. Создание своей команды пункта Найти меню Пуск
■ HKEY_CURRENT_USER\Software\Microsoft\Java VM — еще одна интересная ветвь реестра, параметры которой определяют настройки консоли Java. К контексту данной главы эти параметры не очень подходят. Все, кроме одного, имеющего название EnableJavaConsole. Параметр имеет тип REG_BINARY, и если его значение будет равно 1, то в своем меню Вид Проводника и браузера Internet Explorer вы сможете встретить команду Окно языка Java, после нажатия которой перед вами предстанет окно, подобное изображенному на рис. 5.12. Автор не очень разбирается в языке Java, поэтому судить о важности данной команды предоставляет читателям.
Рис. 5.12. Добавление к меню Вид вызова консоли языка Java
■ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon — используется для хранения установок сервиса WINLOGON — именно ему мы доверяем свой логин и пароль при входе в систему. Конечно, установки WINLOGON малопригодны для настройки оболочки, но все-таки существует один параметр, который подходит к описываемой теме. Этот параметр имеет строковый тип и называется Background. Его значение определяет цвет фона, который будет использоваться для отображения Рабочего стола при выводе диалога регистрации в системе (только если используется классический вход в систему), и имеет уже знакомый вам RGB-формат. Например, если присвоить этому параметру значение 000, то вместо стандартного голубоватого фона вы получите строгий черный.
■ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer — содержит очень интересный параметр, имеющий DWORD-тип, — MaximizeApps. Если его значение будет равно 1, то все запускаемые вами программы будут открываться на весь экран. Предположительно этот параметр применяется для отображения на весть экран командной строки cmd.exe при использовании альтернативного входа в систему Безопасный режим с использованием командной строки.
■ HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections — содержит параметр строкового типа SaveConnections. Его значение определяет, будет ли операционная система по умолчанию создавать перманентные подключения к сетевым папкам и принтерам (перманентные подключения — это подключения, которые будут восстанавливаться после следующего входа пользователя в систему). Если значение равно no, то перманентные подключения создаваться не будут. По умолчанию значение равно yes, хотя иногда это может нарушить систему безопасности (например, когда в системе используются скрытые сетевые ресурсы, заканчивающиеся на знак $ и при этом администратор не хотел бы, чтобы пользователи знали о таких сетевых ресурсах).
■ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider — может содержать DWORD-параметр RestoreConnection. По умолчанию его значение равно 0, что говорит о том, что Windows разрешено использовать фантомные подключения. Если значение равно 1, то это будет запрещено.
ПРИМЕЧАНИЕ
Фантомные подключения — это перманентные подключения, которые при входе пользователя в систему считаются восстановленными, хотя фактически система не выполняла их восстановление. Плюсом фантомных подключений является то, что такие подключения при входе пользователя физически не восстанавливаются, поэтому вход будет быстрее. К тому же если удаленный компьютер, доступ к которому система должна восстановить, в данный момент выключен, то система при входе пользователя не будет выводить диалог о недоступности компьютера (при отключении фантомных подключений операционная система будет выдавать сообщение о том, что она не смогла восстановить подключение, если необходимый компьютер недоступен). Минусом же такого подключения является небольшая задержка перед его использованием в первый раз, необходимая чтобы система смогла физически установить подключение удаленного компьютера.
■ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares — раз уж зашла речь о сети, то немного продолжим эту тему. В предыдущей части книги упоминалась команда (даже несколько команд), с помощью которой можно было создать общедоступную папку. Но это не единственная возможность операционной системы, предназначенная для работы с общедоступными папками, ведь вы уже знаете, что большую часть всей своей конфигурационной информации Windows хранит в реестре. Информация о общедоступных папках не является исключением — именно для ее хранения и применяется описываемая ветвь реестра.
Ветвь включает в себя список параметров REG_MULTI_SZ-типа, каждый из которых описывает один общедоступный ресурс (имя параметра равно названию общедоступной папки) (рис. 5.13). Описание ресурса состоит из следующих строк (находятся в значении параметра):
• CSCFlags — определяет флаги кэширования папки для работы в автономном режиме (например, если данный параметр равен 48, то кэширование выполняться не будет, если равен 16, то будет выполняться кэширование документов в автоматическом режиме, если равен 0, то кэширование будет выполняться в ручном режиме);
• MaxUses — определяет количество пользователей, которые могут одновременно получить доступ к ресурсу (если определено неограниченное количество пользователей, то эта строка примет вид MaxUses=4294967295);
• Permissions — назначение неизвестно (всегда равен 0);
• Remark — определяет примечание к общедоступному ресурсу (оно создается с помощью поля Примечание на вкладке Доступ);
• Туре — назначение неизвестно (для папок всегда равен 0, а для принтеров равен 1).
Рис. 5.13. Хранение сведений о папках, к которым открыт общий доступ
Имейте в виду, что файлы и папки, находящиеся в общем доступе, менее защищены, чем при отсутствии общего доступа к ним. По этой причине рекомендуется периодически проверять содержимое таких папок.
Глава 6