Этот документ раскрывает технические детали процесса замены стандартного текстового редактора Windows Notepad на более продвинутый, который любят многие программисты - на Notepad2. Поскольку Notepad2 версии 4.2.25 имеет программу установки, которая сама делает такую замену, то больше нет необходимости вручную проводить шаги, описанные ниже [1].
Некоторые замечания по программе установки можно найти в Notepad2 FAQ [2], см. вопрос "Как использовать утилиту установки (Notepad2 Setup Tool) чтобы установить и обновить Notepad2?".
Со своей модифицированной версией Notepad2 [3] Kai Liu представил поддержку замены Windows Notepad с использованием чистого, не разрушающего работу системы метода, основанного на реестре.
[Замена Windows notepad на notepad2]
Процедура замены может показаться немного сложной, поскольку notepad.exe является защищенным системным файлом, что усложняет его прямую замену (однако замена все же возможна).
Самый простой способ замены - использовать ключ реестра "Image File Execution Options", чтобы заставить Windows запускать notepad2.exe всякий раз, когда раньше должен был бы запускаться notepad.exe. Тот же самый трюк используется и в функции "Replace Task Manager" программы Microsoft Process Explorer [4]. Выгода этого метода в том, что замена стандартного Notepad не запутывается системой защиты системных файлов Windows File Protection - потому что на самом деле Вы не заменяете никакой исполняемый системный файл на диске. Программа notepad.exe остается в целости и сохранности на своем старом месте, и Вы можете легко откатить обратно сделанные изменения, просто удалив этот ключ реестра. Недостаток этого метода в том, что он не работает правильно с официальной сборкой Notepad2; есть несколько незначительных изменений, которые нужно сделать для Notepad2 для работы этой функции (см. авторский патч img_exec_replace).
Для использования этого метода замены Notepad Вам нужно выполнить следующие шаги:
1. Получите сборку Notepad2, которая поддерживает эту форму системной замены Notepad.
2. Создайте ключ (раздел) реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe.
3. Внутри этого ключа реестра создайте новое строковое (REG_SZ) значение под именем "Debugger".
4. Установите данные этого нового значения "Debugger" в значение полного пути до исполняемого файла Notepad2, за которым идет опция /z, например:
"C:\Windows\Notepad2.exe" /z
Simon Steele описывает ту же процедуру для своего текстового редактора Programmer's Notepad [5], и также объясняет, какой ключ реестра использовать на 64-битной версии Windows, когда Вы используете 32-битную версию Notepad2 на 64-битной версии Windows.
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
[Замена в случае Notepad2 версии 4.1.24 (или более новой)]
Поскольку начиная с версии 4.1.24 официального релиза Notepad2 поддержка этого метода замены стандартного Windows Notepad уже предусмотрена, то описанные выше шаги работают нормально. Однако в этих версиях нет автоматической поддержки замены Notepad, так как официальный релиз Notepad2 не модифицирует реестр системы. По той же причине нет поддержки доступа по умолчанию к последним используемым файлам через списки перехода Windows 7 (потому что это требует предварительной регистрации приложений в системном реестре).
Также избегайте использование автоматической замены Notepad при запуске с извлекаемых носителей (например флешка), поскольку это может дать нежелательные эффекты, если программа Notepad2 запускалась не с фиксированного места положения на диске - оригинальное состояние не будет восстановлено, если извлечено устройство, с которого был осуществлен запуск.
Скрипт командного файла для запуска из директории Notepad2 и замены Windows Notepad может выглядеть следующим образом (это требует повышенных административных привилегий):
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution
Options\notepad.exe" /v "Debugger" /t REG_SZ /d "\"%~dp0Notepad2.exe\" /z" /f
Оригинальный Windows Notepad может быть восстановлен следующей командой (также требуются права администратора):
reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File
Execution Options\notepad.exe" /f
[Как добиться поддержки списка последних изменяемых файлов]
Требуется провести несколько дополнительных настроек, чтобы работала стандартная функция списка доступа к последним изменяемым файлам (recent file access) через списки перехода (jump lists), представленные в Windows 7. Сначала зарегистрируйте Notepad2 как обработчик "Open with" с использованием следующего командного файла (его нужно запустить из каталога установки Notepad2.exe с повышенными привилегиями):
reg add "HKCR\*\OpenWithList\Notepad2.exe" /f
reg add "HKCR\Applications\Notepad2.exe" /v "AppUserModelID"
/t REG_SZ /d "Notepad2" /f
reg add "HKCR\Applications\Notepad2.exe\shell\open\command"
/ve /t REG_SZ /d "\"%~dp0Notepad2.exe\" %%1" /f
После этого сделайте следующие изменения в файле Notepad2.ini:
[Settings2]
...
ShellAppUserModelID=Notepad2
ShellUseSystemMRU=1
После этого "Recent files" появятся в jump lists. Окна Notepad2 теперь присвоены пользовательскому AppUserModelID, и из-за этого могут проявиться несколько иконок, если Notepad2.exe непосредственно прикреплен к панели задач (taskbar). Чтобы исправить это, сначала откройте окно Notepad2, и затем привяжите его к панели задач с помощью кнопки контекстного меню Notepad2 на панели задач.
Отмена регистрации для Notepad2 обработчика "Open with" делается следующим скриптом (требуются повышенные административные привилегии):
reg delete "HKCR\*\OpenWithList\Notepad2.exe" /f
reg delete "HKCR\Applications\Notepad2.exe" /f
© Florian Balmer 1996-2014
[Ссылки]
1. Notepad2 Replacing Windows Notepad site:flos-freeware.ch. 2. Notepad2 FAQ. 3. Notepad2 Modifications site:code.kliu.org. 4. Process Explorer By Mark Russinovich site:microsoft.com. 5. Programmer's Notepad site:pnotepad.org. |