Вопрос Замена notepad.exe в Windows 7


Хорошо, я действительно очень хотите заменить файл notepad.exe по умолчанию в Windows 7 с помощью Editpad (да, я хочу заменить фактический исполняемый файл, и нет, я не хочу использовать что-то вроде Notepad2, поэтому, пожалуйста, не предлагайте этого). Я использовал следующий пакетный скрипт, который работал для меня раньше:

@echo off
TITLE EditPad Install Script for Complete Windows Vista and 7 Notepad Replacement
echo.
echo EditPad Install Script for Complete Windows Vista and 7 Notepad Replacement
echo Version 2.0
echo.
echo Confirm to apply? (Press Ctrl-C and answer Y to terminate)
pause
echo.
echo.

if exist %SystemRoot%\notepad.original.exe goto exist_editpad_already
if exist %SystemRoot%\System32\notepad.original.exe goto exist_editpad_already
takeown /f %SystemRoot%\notepad.exe
takeown /f %SystemRoot%\System32\notepad.exe
icacls %SystemRoot%\notepad.exe /grant "%USERNAME%":f
icacls %SystemRoot%\System32\notepad.exe /grant "%USERNAME%":f
IF EXIST %SystemRoot%\SysWOW64 (bcdedit.exe -set loadoptions "DDISABLE_INTEGRITY_CHECKS")
copy %SystemRoot%\notepad.exe %SystemRoot%\notepad.original.exe
copy %SystemRoot%\System32\notepad.exe %SystemRoot%\System32\notepad.original.exe
echo.
echo Original notepad.exe has been renamed to "notepad.original.exe" in its original folder.
echo.
echo Overwriting %SystemRoot%\notepad.exe with "%~dp0\EditPad.exe"
copy "%~dp0\EditPad.exe" %SystemRoot%\notepad.exe /y
echo Overwriting %SystemRoot%\System32\notepad.exe with "%~dp0\EditPad.exe"
copy "%~dp0\EditPad.exe" %SystemRoot%\System32\notepad.exe /y
echo.
echo EditPad installation is completed.
echo If no error occurred, EditPad will now replace all Notepad functions.
echo.
pause
goto eof

:exist_editpad_already
echo.
echo INSTALLED EditPad ALREADY! (notepad.original.exe exists in windows or windows system32)
echo.
pause
goto eof

:eof

Этот скрипт заменил notepad.exe на исполняемый файл Editpad, но теперь, если я попытаюсь открыть текстовый файл, я получаю сообщение об ошибке «Ваша копия NOTEPAD.EXE, похоже, повреждена. Попробуйте переустановить ее из исходного пакета установки. "

Я использую 64-разрядную версию Windows 7. Что я могу сделать, чтобы заставить Windows разрешить мне использовать Editpad в качестве моего notepad.exe, не дав мне этого глупого сообщения об ошибке?

ОБНОВИТЬ:
Я думаю, у меня есть дополнительная информация, которая может немного помочь. Проблема, похоже, в том, что я запускаю editpad.exe вообще внутри каталога system32. Если я заменю различные другие exe-файлы для system32\notepad.exe они работают нормально, но когда я пытаюсь запустить editpad.exe внутри этого каталога Windows 7 дает мне всплывающее диалоговое окно: «Издатель не может быть проверен. Вы уверены, что хотите запустить это программное обеспечение?» Если я нажму «Run», я получаю ошибку «файл поврежден», но ТОЛЬКО, если я запускаю его внутри каталога system32. Мне нужно найти способ запустить этот exe внутри каталога system32.


7
2018-02-20 14:48


происхождения


Почему бы не просто установить программу по умолчанию для .txt на editpad? - Raystafarian
Я знал, что кто-то это скажет. У разных вещей есть расположение notepad.exe, жестко закодированное в них, и гораздо проще заменить notepad.exe, чем изменять ассоциации файлов и настройки конфигурации повсюду. - Jez
Хорошо знать. эта тема  мог бы иметь некоторую релевантную информацию. Я подумал, что постараюсь внести свой вклад, поскольку я задал вопрос. - Raystafarian
ручной метод здесь ...howtogeek.com/howto/12617/how-to-replace-notepad-in-windows-7 - Moab
Возможный дубликат Как заменить Блокнот в Windows 7? - Steven Vascellaro


ответы:


Моя идея - создать приложение стороннего разработчика, которое может копировать записи реестра образа, чтобы правильно запустить EditPad.

Заметка: Вам придется восстановить оригинал Windows Notepad сначала, либо через появившееся сообщение об ошибке, либо отменив сделанные вами изменения. В противном случае Windows может продолжать указывать вам сообщение об ошибке независимо от того, что вы пытаетесь сделать.

Наконечник:  Блокнот для заметок предложенный Dracs, делает что-то похожее на то, что ниже автоматически, Сначала попробуйте это, если у вас нет причин его избежать, например, приложение закрытый источник, В этом случае вы можете использовать следующий метод:

  1. Создайте командный файл со следующим кодом. Пакетный файл можно назвать Replacer.bat например, и его можно разместить где угодно, например, в папке установки EditPad. (Я предполагаю, что EditPad установлен в указанном пути. Если нет, пожалуйста, измените его.)

    SET NotepadTempVar=%*
    IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\System32\notepad.exe"=%
    IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\notepad.exe"=%
    IF DEFINED NotepadTempVar (
        FOR /F "tokens=*" %%A IN ("%NotepadTempVar%") DO SET NotepadTempVar=%%A
    )
    IF DEFINED NotepadTempVar (
        START "" "C:\Program Files\EditPad\EditPad.exe" "%NotepadTempVar%"
    ) ELSE (
        START "" "C:\Program Files\EditPad\EditPad.exe"
    )
    
    • ВНИМАНИЕ! Нужно иметь пустую строку "" после команды START, иначе ваша система может перейти в бесконечный цикл создания новых Командная строка окна.
    • Возможно, вам придется проверить пути оригинал Блокнот во второй и третьей строках, чтобы отразить вашу систему. Я нашел пути одинаковыми как в 32-битной, так и в 64-битной Windows. Пути без учета регистра но будьте осторожны, чтобы сохранить отметки кавычек вокруг них.
    • В 64-битной Windows вам может потребоваться добавить это дополнительный линия между второй и третьей строками:

      IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\SysWOW64\notepad.exe"=%
      


  2. (необязательный)использование Конвертер Batch To Exe для компиляции командного файла в исполняемую программу. Выберите опцию «Невидимое приложение».

    • Если вы не хотите использовать Конвертер Batch To Exe, вы можете использовать другое решение, или вы можете использовать сам пакетный файл для следующих шагов, а не скомпилированных EXE файл. Однако, если вы используете сам пакетный файл, вы увидите мгновенное мигание командного окна перед тем, как откроется EditPad.

  3. открыто Редактор реестра открыв меню «Пуск» и regedit (или используя команду «Выполнить» для запуска regedit).

  4. Перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

  5. Если ключ (папка в левой панели) notepad.exe не существует внутри Image File Execution Options, щелкните Изменить> Создать> Ключ и тип notepad.exe как имя нового ключа. Если он уже существует, просто перейдите к нему.

  6. Если запись с именем Debugger (тип REG_SZ) не существует в notepad.exe (справа), нажмите Изменить> Создать> Значение строки и тип Debugger как имя новой записи.

  7. Дважды щелкните запись с именем Debugger и введите полное квалифицированное местоположение и имя EXE-файла, сгенерированного Конвертер Batch To Exe  или командный файл, если вы не использовали компилятор. Включите местоположение в кавычки.

    • Например, предположив, что вы сохранили командный файл в папке программы EditPad, значение записи Debugger может быть "C:\Program Files\EditPad\Replacer.bat"  или  "C:\Program Files\EditPad\Replacer.exe"  где Replacer.bat - командный файл, а Replacer.exe - это скомпилированный EXE-файл, полученный на шаге 2, если он,

  8. Проверьте настройку:

    • Открытие Windows Notepad из меню «Пуск». Вместо этого следует открыть EditPad.
    • Двойной щелчок по текстовому файлу или любому файлу, связанному с Windows Notepad.
    • Тестирование других средств, которые, как вы знаете, должны нормально открывать Блокнот Windows. Скорее всего, они скорее откроют EditPad.

Если возникнут какие-либо проблемы, ваши пути в пакетном файле, созданные на шаге 1, могут быть неверными. Все остальные шаги должны быть в порядке, без каких-либо проблем, если вы следовали за ними правильно. Просто проверьте и исправьте пути в пакетном файле (и при необходимости перекомпилируйте EXE).


3
2018-02-27 20:58



Этот метод пакетного файла replacer работает. Благодаря! Но не могли бы вы рассказать мне, что вы делаете с NotepadTempVar? Кажется, вы определяете его, а затем продолжаете проверять, определено ли это ... Кроме того, я советую удалить вашу строку об использовании «Notepad Replacer». Это закрытый источник, и мне не нравится устанавливать это в моей системе, поскольку я не могу быть уверен, что он делает. Вероятно, я буду писать что-то подобное этому в будущем, но сделаю его открытым исходным кодом. - Jez
@Jez Я использую NotepadTempVar во-первых START линия. Я упомянул «Notepad Replacer» для других (я упомянул, что вы можете пропустить попытку, если у вас есть причины, чтобы избежать его, например, «закрытый источник».) Мой командный файл прошел много изменений и тестов, чтобы придумать этой текущей версии. Первоначально я думал, что могу просто бросить EditPad.exe "%2"но он никогда не работал. Я придумал гораздо более длинный пакетный файл, чтобы позаботиться о проблеме, но даже это не сработало для некоторых ситуаций. Затем, медленно изменяя и тестируя, я придумал эту окончательную версию. - ADTC
@Jez немного больше о NotepadTempVar, Сначала он принимает полный набор аргументов командной строки. Вторая и третья строки удаляют известные пути системы notepad.exe из NotepadTempVar, Причина, по которой они (и другие строки) должны проверить, NotepadTempVar определяется потому, что если какая-либо из SET операции получают пустое значение для ввода NotepadTempVar, он станет неопределенным, в результате чего следующие строки будут работать некорректно (я уже тестировал это. Выполнение удаления известного пути notepad.exe по неопределенной переменной даст нежелательные эффекты). - ADTC
Последний IF DEFINED гарантирует, что EditPad не будет вести себя некорректно, когда окончательное значение NotepadTempVar пусто. (Notepad2 будет автоматически Открой открыто диалог, когда пустая строка "" передается как имя файла. Я поставил чек, чтобы такие вещи не случались с кем-либо, использующим мой пакетный файл, независимо от программного обеспечения для замены, которое они хотят использовать.) Этот командный файл также гарантирует, что пути с 2 + последовательными пробелами не прерываются (мой более длинный метод не смогли). PS: Я слышал, что EditPad имеет возможность заменить Notepad в своем меню Config. Вы пытались найти и использовать это в первую очередь? - ADTC
@Jez Я обеспечил, чтобы мой командный файл не сбой, когда notepad.exe (через контекстное меню «Пуск» или даже Windows/System32 и дважды щелкните по нему). Это был один из моих тестов. IF DEFINED проверки на самом деле для этого и для защиты командного файла от любого возможного экземпляра неопределенного NotepadTempVar, Чтобы правильные команды выполнялись, когда NotepadTempVar переменные становятся неопределенными (из-за пустого значения, установленного для него, используя SET команда). Надеюсь, это понятно :) - ADTC


Использовать Параметры выполнения файла изображения ключ реестра.

  • открыто regedit.exe как Администратор.
  • Перейдите к HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  • Создайте новый ключ (папку) с именем notepad.exe
  • Создать новый REG_SZ значение называется Debugger и установите его значение для вашего пути к Editpad.exe исполняемый файл.

Готово. Это не требует изменения или удаления notepad.exe, но независимо от того, как программа пытается ее запустить (просто попробуйте дважды щелкнуть программу из Explorer самостоятельно), она запустит EditPad.

Если вы используете 64-битную Windows и пытаетесь использовать 32-разрядную программу, внесите изменения в HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options вместо. (Эта информация найдена на Notepad2 - Замена Windows Notepad стр.)


3
2018-02-20 16:23



Ну, это меняет вещи, но вместо этого теперь дает мне другую ошибку. :-) «Область данных, переданная системному вызову, слишком мала». - Jez
Проверьте мое редактирование. Если EditPad - это 32-разрядное приложение, возможно, вам придется внести изменения в другой раздел реестра. Также следует отметить, что при желании вы также можете передавать параметры командной строки. - afrazier
Вставьте его в реестр внутри Wow6432Node путь все равно не работает. :-( Я все равно получаю ту же ошибку. - Jez
Я могу думать только о двух вещах: 1. Если ваш путь к EditPad содержит пробелы (например, «Program Files»), это полный путь к исполняемому файлу, указанному в реестре? 2. В EditPad есть какая-то тонкая ошибка. Тем не менее, я просто протестировал демонстрацию EditPad Pro в XP VM, и это сработало для меня. (Учитывая, что это 32-битный XP против 64-битного 7, но 32-битный Notepad2.exe работает на моей 64-битной системе Win 7, а также на 64-битной Notepad2.exe делает для этой же цели.) - afrazier
Ответ afrazier - как Notepad2 официально «заменяет» «Блокнот» сам во время установки, не заменяя фактически исполняемый файл «Блокнот» notepad.exe, Однако, В Notepad2 есть /z аргумент командной строки, который позволяет избежать открытия исходного исполняемого файла Notepad (notepad.exe) как редактируемый текст в Notepad2 (поскольку система отладки Windows передаст ее Notepad2). Если EditPad не имеет аналогичных аргументов, которые могут заставить его игнорировать переданные в notepad.exe вы не сможете правильно использовать ответ afrazier. - ADTC


Я сделал это на своем компьютере, используя Блокнот для заметок, На самом деле это не заменяет никаких файлов, но это делает что-нибудь, что блокнот сделал бы для использования любой выбранной вами программы. Я не видел оригинальный блокнот, так как я его установил. Удаление также легко вернет все обратно.


2
2018-02-26 05:38



@Jez Это должно действительно работать, а также заботиться о проблеме, о которой я упоминал в своем предыдущем длинном комментарии. Дайте мне знать, если это не так, потому что у меня есть другая идея для вас попробовать. - ADTC
@ADTC Пожалуйста, разместите свою другую идею в качестве ответа. - Jez
Хм хорошо @Jez. Кстати, я надеюсь, что вы восстановили исходный блокнот Windows (через сообщение об ошибке или отменив изменение пакетного файла), прежде чем пытаться Блокнот для заметок Вот. Если нет, Windows будет продолжать приставать к вам, даже если вы попытаетесь Блокнот для заметок, - ADTC
+1 - Хорошая находка, которая должна позволить заменить Блокнот любым редактором! - afrazier
@Jez это сделано. Мне пришлось много тестировать, чтобы командный файл работал правильно во всех ситуациях, поэтому я так долго занимался подготовкой ответа. - ADTC


Я думаю, вам также нужно заменить файл notepad.exe в %WINDIR%\winsxs\Backup но даже это может не работать должным образом - это связано с Защита ресурсов Windows,


1
2018-02-26 15:57





Просто запустите командный файл в режиме администратора.

  1. Щелкните правой кнопкой мыши на пакетном файле
  2. Выберите «Запуск от имени администратора»
  3. Продолжить установку

Если вы уже выполнили этот скрипт раньше, чем, скорее всего, он не сработает немедленно, и вам нужно будет удалить notepad.original.exe из% SystemRoot% и% SystemRoot% \ System32:

rm %SystemRoot%\notepad.original.exe
rm %SystemRoot%\System32\notepad.original.exe

Помните, что вам также нужно запустить это в режиме администратора, поэтому скопируйте выше строки в файл и выполните те же инструкции, что и для исходного пакетного файла выше.


0
2018-02-20 15:38



Я запустил его в режиме администратора. Как можно удалить файлы .original? - Jez
Я сначала попробовал его в режиме без администратора, и он потерпел неудачу, но создал файлы .original. Позже, когда вы запускались в режиме администратора, это не сработало с тех пор, как уже появились исходные файлы. Но как только я их удалю - скрипт работал. Я не знаю, почему это не работает для вас - я также использую Win7 64-bit. - Sergiy Byelozyorov


Вы написали:

Этот скрипт заменил notepad.exe на исполняемый файл Editpad, но   теперь, если я попытаюсь открыть текстовый файл, я получаю сообщение об ошибке «Ваша копия   Кажется, что NOTEPAD.EXE поврежден. Попробуйте переустановить его.   из исходного пакета установки. "

notepad.exe это Защищенный файл Windows вот почему это немного сложно заменить ...

Вот руководство решения из HowTo Geek Веб-сайт: Как заменить блокнот в Windows 7

http://www.howtogeek.com/howto/12617/how-to-replace-notepad-in-windows-7/

Другим вариантом может быть использование служебной программы командной строки Sysinternals PsExec в вашем пакетном файле со следующими переключателями

...PsExec.exe" -i -d -s...

PsExec: http://technet.microsoft.com/en-us/sysinternals/bb897553

Надеюсь, эта помощь. Дайте нам знать.


0
2018-02-27 14:48



Что касается веб-сайта HowTo Geek, к сожалению, Windows 7 идиотично отказывается запускать исполняемые файлы в каталоге system32, для которых «издатель не может быть проверен», что, похоже, относится к моему editpad.exe. Если я попытаюсь запустить его в каталоге system32, я получаю сообщение об ошибке «Ваша копия NOTEPAD.EXE была повреждена ...». - Jez
Проверьте эту статью: Windows: отключить сообщения «Publisher не удалось проверить» technipages.com/...  Это решение для вас? Я надеюсь, что это так! :) - climenole
@Jez Btw кто-то прокомментировал эту статью HowToGeek, которая «Я использую EditPad уже много лет, и он может быть настроен на замену Windows Notepad без лишних хлопот - просто проверив опцию в своем конфигурационном меню». Вы проверяли такую ​​опцию в своем меню конфигурации? - ADTC