Каждый раз, когда в сети появляется очередная сборка Windows, сотни энтузиастов набрасываются на неё. Кто-то оценивает стабильность системы, кто-то - совместимость приложений, кто-то бросается на поиски новых твиков и функций. Гик-быдлокодер, живущий во мне, скорей из последних. Он повёрнут на горячих клавишах и всевозможных скрытых параметрах системы, и всегда толкает меня на увлекательное путешествие по дебрям системного реестра.
Я хочу с вами поделиться парой совсем простых приёмов, используя которые, можно быстро найти новые сочетания клавиш, и секретные твики. Я воспользуюсь Windows 8 Developer Preview в качестве примера. Если вам интересно - прошу под кат.
Как найти новые глобальные горячие клавиши
Это очень просто. Суть поиска глобальный сочетаний клавиш сводится к следующему алгоритму:
- Берем сочетание клавиш, ну например [k]Win[/k]+[k]B[/k], и пытаемся его зарегистрировать API-функцией RegisrterHotkey.
- Если получилось - сочетание не занято, "отпускаем" его при помощи UnregisterHotkey. Если нет - вуаля, это сочетание занято операционной системой или какой-либо сторонней программой. В нашем случае сочетание [k]Win[/k]+[k]B[/k] будет занято, так как оно используется Проводником для передачи фокуса в область уведомлений (трэй).
Если слова API-функция и RegisrterHotkey для вас звучат как шелест листьев ветреным осенним днем, и тяги к программированию ради такой задачи у вас не возникает, вы можете воспользоваться программой Ethervane ActiveHotkeys. Она формирует список горячих клавиш, глобально зарегистрированных в системе.
Перед поиском глобальных горячих клавиш есть смыл закрыть все программы, в особенности те, что регистрируют глобальные хоткеи - Punto Switcher, ICQ, а также отключить регистрацию глобальных хоткеев в драйверах ваших устройств, если таковые имеются (софт интегрированных видеокарт Intel, например, вешает глобальные клавиши на поворот экрана). Это необходимо сделать для того, чтобы в список системных хоткеев, который является нашей целью, не затесались сочетания клавиш от стороннего ПО. После этого запускаете ActiveHotkeys.
Слева выбираете, какие клавиши/группы клавиш тестировать на предмет участия в сочетаниях, справа будет построен список найденных сочетаний.
После того, как список построен, нажмите [k]F5[/k], чтобы в нем остались только "активные" сочетания, т.е. задействованные операционной системой глобально. Бинго! Теперь вы - обладатель полного списка горячих клавиш операционной системы. Что делает конкретное сочетание клавиш, можно выяснить, банально нажав его на клавиатуре.
В ходе подготовки этой части статьи я открыл для себя новое сочетание [k]Ctrl[/k]+[k]Alt[/k]+[k]Tab[/k]. При его нажатии окно переключения между приложениями не пропадает, а остается на экране, и перемещаться между миниатюрами приложений можно при помощи стрелок на клавиатуре или клавиши Tab. Выбор приложения осуществляется мышкой или клавишей Enter. Довольно удобно, не нужно удерживать нажатыми на клавиатуре [k]Alt[/k]+[k]Tab[/k]. Этот хоткей появился ещё в Windows Vista, но для меня до сих пор оставался незамеченным.
Как найти секретные твики и параметры реестра
Поиск скрытых параметров реестра Windows несколько сложнее. Обычно эти параметры отсутствуют по умолчанию в реестре, но можно отследить обращения к ним системных процессов. Делается это приблизительно по следующему алгоритму:
- Завершается процесс, работа с реестром которого нас интересует.
- Запускается программное обеспечение, отслеживающее изменения в системном реестре. Я использую Sysinternal Process Monitor . В нем настраиваются фильтры, как минимум имя процесса, который будет отслеживаться.
- Запускается мониторинг, и следом запускается исследуемое приложение.
- В полученных результатах мониторинга анализируются записи, у которых результат - ключ/параметр не найден.
В качестве демонстрации я покажу мониторинг Проводника Windows 8 Developer Preview. Я попытаюсь отследить, какие ключи реестра процесс Explorer.exe не может найти в ветке HKCU\ и ниже.
- Запустите Process Monitor. Совет: если он у вас сразу "подвис", мониторя события, нажмите [k]Ctrl[/k]+[k]E[/k] - это остановит мониторинг событий и даст вам возможность спокойно настроить фильтр.
Укажите в качестве параметров фильтра ([k]Ctrl[/k]+[k]L[/k]) следующие настройки и нажмите OK:
Значения фильтра можно прочитать так: включать все события, результат которых - не "Успех", путь в реестре включает в себя строку HKCU и имя процесса включает в себя строку explorer.exe. Можно поставить более жесткие фильтры и разбить анализ на несколько этапов, например, отдельно проанализировать ветку HCKU\Software\Microsoft\Windows, отдельно ветку HCKU\CLSID, ну и так далее. Это снизит количество информации procmon и позволит более быстро обнаружить новые параметры. - Завершите работу Проводника.
- Нажмите [k]Ctrl[/k]+[k]E[/k] в Process Explorer.
- Запустите Проводник, например, при помощи Диспетчера задач.
Вы без труда найдете секретный параметр под названием YouBettaHideYoPearl , отключающий оба интерфейса Windows 8.
Сложность заключается в том, чтобы проверить найденные параметры в действии. Их придется создавать вручную и искать изменения в поведении системы. Я рекомендую проводить подобные эксперименты на специально установленной для этих целей копии Windows 8. Установка Windows 8 в VHD как раз отлично подходит.
Описанные в статье приёмы, безусловно, не претендуют на крэш-курс "В хакеры за полчаса", и их просто недостаточно, чтобы раскопать всё, что припрятали разработчики от глаз и шаловливых ручонок пользователей. И тем не менее, вы сможете найти для себя немало интересного, выполнив эти простые шаги.
Если вы знаете более эффективные приемы поиска секретов Windows - прошу в комментарии.
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
Отлично! Видны навыки программиста 🙂
Поиском горячих клавиш никогда не занимался, но метод интересный. CTRL+ALT+TAB пользуюсь крайне редко, когда уж слишком много окон открыто и нужно время, чтоб разобраться 🙂
Отслеживание реестра тоже хороший вариант, но я чаще смотрю ACCESS DENIED 🙂
Это интересно! Спасибо! Поиск твиков явно для гиков, к тому же с кучей свободного времени, ибо найти что-либо в миллиардах обращений прокмона к реестру надо постараться. Нет, прожка в 5kb конечно не вызовет проблем, но проводник или какой-нибудь IE — это труба 🙂
@Vadim Sterkin спасибо. Не очень мне ясно, как ACCESS DENIED поможет, когда ключа/параметра попросту нет. Результат в ProcMon отображается в этом случае как NOT FOUND.
@Mphs Всех твиков не отследить даже при наличии свободного времени. Но можно поставить более жесткие фильтры и разбить анализ на несколько этапов, например, отдельно проанализировать ветку HCKU\Software\Microsoft\Windows, отдельно ветку HCKU\CLSID, ну и так далее.
Это снизит количество информации procmon и позволит более быстро обнаружить новые параметры. Стоит добавить это в статью.
Сергей, для удобного переключения между окнами запущенных приложений рекомендую VistaSwitcher (www.ntwind.com).
Как узнать какой программе принадлежит назначенное сочетание клавиш?
@Nikita , спасибо, но функциональность штатного окна переключения задач меня вполне устраивает. Не вижу для себя ни одного веского повода использовать стороннее ПО.
Узнать, какой именно программе принадлежит сочетание клавиш, невозможно в принципе. Операционная система не предоставляет никаких механизмов, сообщающих, какая программа зарегистрировала за собой хоткей, увы.
Именно поэтому я и рекомендовал отключить всё стороннее ПО перед поиском сочетаний.
@Сергей Ткаченко
Вообще, для поиска различных твиков PrоcMon можно отнести к утилитам из разряда «must have». Помимо фильтрации по разделам реестра иногда сильно помогает фильтрация по самим процессам. По крайней мере, мне такая фильтрация очень много раз помогала 🙂
А я и не говорил, что использую для тех же целей, что и ты. ACCESS DENIED помогает понять, куда нет прав на доступ, если приложение выдает неинформативную ошибку.
@Dmitry Bulanov Полностью согласен. Фильтр по разделу я поставил для примера, дабы быстро «найти и показать». В реальных условиях фильтр по ветке реестра можно не ставить, вместо этого следует запастись временем для анализа результатов 🙂
@Vadim Sterkin А уж я-то подумал, что что-то упустил. Буду иметь ввиду.
В тему — помнится когда попал в список тестеров одной игрушки, пришлось поставить себе программу граббер-скриншотов, и вот помню, как она ругалась при каждом запуске что такие-то горячие клавиши заняты таким-то приложением… Вот только название вспомнить не смог 🙁
(хотя может я просто запамятовал, за давностью лет, и она сообщала о занятости, не указывая занявшее приложение, но точно помню, что у пунты пришлось убрать пару ненужных мне, но нужных той софтине сочетаний, и узнал я о том что именно пунту нужно мучать как-то…)
Если я правильно себе представляю механизм регистрации и обработки сочетаний клавиш глобально, то такое технически нереализуемо. Горячая клавиша — это сообщение окну. Сказать, какое окно на это сообщение отреагирует, нельзя.
значит все-таки запамятовал… эээх память моя девичья…
а горячие клавиши которым назначены какие либо задачи или ярлыки? окон же нет…
Эти сообщения обрабатывает окно Проводника, который и запускает их.