Windows 7에서 notepad.exe 교체


7

좋아, 정말로 Windows 7의 기본 notepad.exe를 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 복사본이 손상된 것 같습니다. 오류가 발생합니다. 원래 설치 패키지에서 다시 설치하십시오. "

Windows 7 64 비트를 사용하고 있습니다. 이 바보 같은 오류 메시지를 표시하지 않고 Windows에서 Editpad를 notepad.exe로 사용하도록하려면 어떻게해야합니까?

업데이트 :
약간 도움이 될만한 정보가 더 있다고 생각합니다. 문제 는 system32 디렉토리 내부 에서 editpad.exe 실행하는 것으로 보입니다 . 다른 exe 파일을 다른 파일로 대체해도 system32\notepad.exe제대로 실행되지만 editpad.exe해당 디렉토리 내 에서 실행하려고하면 Windows 7에서 "게시자를 확인할 수 없습니다.이 소프트웨어를 실행 하시겠습니까?"라는 팝업 대화 상자가 나타납니다. 실행을 클릭하면 '파일이 손상되었습니다'오류가 발생하지만 system32 디렉토리 내에서 파일을 실행하는 경우에만 해당됩니다. system32 디렉토리 에서이 exe를 실행하는 방법을 찾아야합니다.


2
왜 .txt의 기본 프로그램을 editpad로 설정하지 않습니까?
Raystafarian 2019

2
누군가 그렇게 말할 줄 알았습니다. 다양한 것들이 notepad.exe의 위치에 하드 코딩되어 있으며 파일 연결 및 구성 설정을 변경하는 것보다 notepad.exe를 대체하는 것이 훨씬 쉽습니다.
Jez

1
알아 둘만 한. 이 스레드 에는 관련 정보 가있을 수 있습니다. 질문을 한 후 약간의 기여를하려고 생각했습니다.
Raystafarian 2019


답변:


3

내 생각은 EditPad를 올바르게 실행하기 위해 Image File Execution 레지스트리 항목을 피기 백 할 수있는 서포터 응용 프로그램을 만드는 것입니다.

참고 : 나타나는 오류 메시지 나 변경 내용을 취소 하여 원래 Windows 메모장을 먼저 복원해야합니다 . 그렇지 않으면 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. (선택 사항) 사용 의 exe 변환기에 배치를 실행 프로그램에 배치 파일을 컴파일 할 수 있습니다. "보이지 않는 응용 프로그램"옵션을 선택하십시오.

    • Batch To Exe Converter 를 사용하지 않으 려면 다른 솔루션을 사용하거나 컴파일 된 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. 이름이 지정된 항목을 두 번 클릭하고 Batch To Exe Converter에서Debugger 생성 한 EXE 파일 또는 컴파일러를 사용하지 않은 경우 배치 파일 의 완전한 위치와 이름을 입력하십시오 . 위치를 따옴표로 묶습니다.

    • 예를 들어, 배치 파일을 EditPad의 프로그램 폴더에 저장했다고 가정하면 Debugger 항목의 값은 "C:\Program Files\EditPad\Replacer.bat" 또는 "C:\Program Files\EditPad\Replacer.exe" Replacer.bat는 배치 파일이고 Replacer.exe는 2 단계에서 얻은 컴파일 된 EXE 파일입니다 (있는 경우) .

  8. 다음을 수행하여 설정을 테스트하십시오.

    • 시작 메뉴에서 Windows 메모장을 엽니 다. 대신 EditPad가 열립니다.
    • 텍스트 파일 또는 Windows 메모장과 관련된 파일을 두 번 클릭하십시오.
    • 다른 테스트는 일반적으로 Windows 메모장을 열어야한다는 것을 의미합니다. 대신 EditPad를 열 것입니다.

문제가 있으면 1 단계에서 만든 배치 파일의 경로가 올바르지 않을 수 있습니다. 올바르게 수행 한 경우 다른 모든 단계는 문제없이 정상이어야합니다. 배치 파일의 경로를 확인하고 수정하십시오 (필요한 경우 EXE를 다시 컴파일하십시오).


이 대체 배치 파일 방법은 치료법으로 작동합니다. 감사! 그러나, 당신이 무엇을하고 있는지 말해 줄 수 NotepadTempVar있습니까? 정의하고 있는지 정의되어 있는지 계속 확인하는 것 같습니다 ... 또한 '메모장 교체'사용에 대한 줄을 제거하는 것이 좋습니다. 폐쇄 소스이며 시스템에 설치하는 것이 싫습니다. 아마 앞으로 비슷한 것을 쓰겠지만 오픈 소스로 만들 것입니다.
Jez

@Jez NotepadTempVar첫 번째 START줄 에서 사용 하고 있습니다. 나는 다른 사람들을 위해 '메모장 교체기'를 언급했다. 이 현재 버전. 처음에는 그냥 넣을 수 있다고 생각 EditPad.exe "%2"했지만 결코 효과가 없었습니다. 문제를 해결하기 위해 훨씬 긴 배치 파일을 생각해 냈지만 일부 상황에서는 작동하지 않았습니다. 그런 다음 천천히 수정하고 테스트하면이 최종 버전이 나왔습니다.
ADTC

@Jez 조금 더에 대해 NotepadTempVar. 먼저 전체 명령 행 인수 세트를 사용합니다. 두 번째 및 세 번째 행은 시스템의 공지 된 경로 제거 notepad.exe에서를 NotepadTempVar. 그들 (및 다른 라인) NotepadTempVar이 정의 되어 있는지 여부를 확인 해야하는 이유는 어떤 SET오퍼레이션에 빈 값을 넣을 NotepadTempVar경우 정의되지 않아 다음 라인이 잘못 작동하기 때문입니다 (이미 테스트했습니다. notepad.exe정의되지 않은 변수에서 알려진 경로를 제거 하면 바람직하지 않은 효과가 나타납니다.
ADTC

마지막은 IF DEFINED의 마지막 값이 때 EditPad가 제대로 작동하지 않습니다 보장 NotepadTempVar비어 있습니다. (메모장 2는 파일 이름으로 빈 문자열 이 전달 될 때 자동으로 열기 대화 상자를 엽니 다 "". 사용하려는 교체 소프트웨어에 관계없이 배치 파일을 사용하는 사람에게는 그러한 일이 발생하지 않도록 확인했습니다. )이 배치 파일은 연속 공백이 2 개 이상인 경로가 중단되지 않도록합니다 (더 긴 방법은 실패했습니다). 추신 : EditPad의 구성 메뉴에서 메모장을 교체하는 옵션이 있다고 들었습니다. 먼저 찾아서 사용해 보셨습니까?
ADTC

1
@Jez 나는 (시작 메뉴 바로 가기를 통해 또는 디렉토리 로 이동하여 두 번 클릭하여) 직접 열 때 배치 파일이 실패 하지 않도록 보장 했습니다. 그것은 내가 한 테스트 중 하나였습니다. 검사 그것에 대해 사실이며, 정의되지 않은 모든 가능한 인스턴스에 대해 배치 파일을 보호하기 위해 . 따라서 변수가 정의되지 않은 경우 ( 명령 을 사용하여 빈 값이 설정되어 있기 때문에) 적절한 명령이 실행됩니다 . 희망 :)notepad.exeWindows/System32IF DEFINEDNotepadTempVarNotepadTempVarSET
ADTC

3

Image File Execution Options 레지스트리 키를 사용하십시오 .

  • regedit.exe관리자로 엽니 다 .
  • 로 이동 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  • 이름이 지정된 새 키 (폴더)를 만듭니다. notepad.exe
  • REG_SZ이름이 지정된 새 값을 작성하고 Debugger해당 값을 Editpad.exe실행 파일 경로로 설정하십시오 .

끝난. 시스템을 수정하거나 제거 할 필요는 없지만 notepad.exe프로그램이 프로그램을 어떻게 실행하려고하더라도 (탐색기에서 직접 프로그램을 두 번 클릭하면) EditPad가 실행됩니다.

64 비트 Windows를 사용 중이고 32 비트 프로그램을 사용하려는 경우 HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options대신 변경하십시오 . (이 정보는 Notepad2-Windows 메모장 교체 페이지에 있습니다.)


1
글쎄, 그게 바뀌지 만, 이제는 다른 오류가 발생합니다. :-) "시스템 호출로 전달 된 데이터 영역이 너무 작습니다."
Jez

편집 내용을 확인하십시오. EditPad가 32 비트 앱인 경우 다른 레지스트리 키를 변경해야 할 수 있습니다. 또한 원하는 경우 명령 줄 매개 변수를 전달할 수도 있습니다.
afrazier

해당 Wow6432Node경로 내의 레지스트리에 넣으면 여전히 작동하지 않습니다. :-( 여전히 같은 오류가 발생합니다.
Jez

두 가지만 생각할 수 있습니다. 1. EditPad 경로에 공백이 포함 된 경우 (예 : "Program Files") 레지스트리에 인용 된 실행 파일의 전체 경로는 무엇입니까? 2. EditPad에는 약간의 미묘한 버그가 있습니다. 그러나 방금 XP VM에서 EditPad Pro 데모를 테스트했으며 나에게 도움이되었습니다. (이것은 32 비트 XP 대 64 비트 7이지만 32 비트 Notepad2.exe는 64 비트 Win 7 시스템에서 작동 하지만 64 비트 Notepad2.exe는 동일한 목적으로 작동합니다.)
afrazier

2
afrazier의 대답은 Notepad2가 실제로 메모장 실행 파일을 실제로 바꾸지 않고 설치 중에 메모장을 공식적으로 "대체" 하는 방법 notepad.exe입니다. 그러나 Notepad2에는 /z명령 줄 인수가있어 Windows 메모장 디버거 시스템에서 Notepad2로 전달하기 때문에 원본 메모장의 실행 파일 ( notepad.exe) 메모장 2에서 편집 가능한 텍스트로 열지 않습니다. EditPad에 전달 된 내용 notepad.exe을 무시할 수있는 비슷한 인수 가 없으면 afrazier의 답변을 올바르게 사용할 수 없습니다.
ADTC

2

메모장 대체 도구를 사용하여 컴퓨터 에서이 작업을 수행했습니다 . 실제로 파일을 대체하지는 않지만 선택한 프로그램을 사용하기 위해 메모장에서 수행 한 작업을 수행합니다. 메모장을 설치 한 후 원래 메모장을 보지 못했습니다. 제거는 모든 것을 쉽게 되돌릴 수 있습니다.


@Jez 이것은 실제로 작동하고 이전의 긴 주석에서 언급 한 문제를 처리해야합니다. 그렇지 않은 경우 알려주십시오. coz 다른 시도가 있습니다.
ADTC

@ADTC 다른 아이디어를 답변으로 게시하십시오.
Jez

흠 좋아 @Jez. Btw, 여기 메모장 교체를 시도하기 전에 오류 메시지를 통해 또는 배치 파일 변경을 취소하여 원래 Windows 메모장을 복원했으면합니다 . 그렇지 않은 경우 메모장 교체 프로그램 을 사용해도 Windows에서 계속 문제를 해결합니다 .
ADTC

+1-메모장을 편집기로 교체 할 수 있어야합니다.
afrazier

1
@Jez 끝났어. 배치 파일이 모든 상황에서 올바르게 작동하도록 많은 테스트를 거쳐야했기 때문에 답변을 준비하는 데 시간이 오래 걸렸습니다.
ADTC

1

notepad.exe 파일을 교체해야 %WINDIR%\winsxs\Backup하지만 이것도 제대로 작동하지 않을 수 있습니다 . 이는 Windows Resource Protection 과 관련이 있습니다 .


0

관리자 모드에서 배치 파일을 실행하기 만하면됩니다.

  1. 배치 파일을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. "관리자 권한으로 실행"을 선택하십시오.
  3. 설치 진행

이미이 스크립트를 이미 실행 한 적이 있다면 즉시 작동하지 않으므로 % SystemRoot % 및 % SystemRoot % \ System32에서 notepad.original.exe를 삭제해야합니다.

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

또한 관리자 모드에서이를 실행해야하므로 위의 행을 파일로 복사하고 위의 원래 배치 파일과 동일한 지시 사항을 수행하십시오.


관리자 모드에서 실행했습니다. .original 파일을 삭제하면 어떻게 도움이됩니까?
Jez

먼저 비 관리자 모드로 시도했지만 실패했지만 .original 파일을 만들었습니다. 나중에 관리자 모드에서 실행하면 .original 파일이 이미 존재하므로 작동하지 않았습니다. 그러나 내가 그들을 삭제하자마자 스크립트가 작동했습니다. 왜 작동하지 않는지 모르겠습니다. Win7 64 비트도 사용하고 있습니다.
Sergiy Belozorov

0

당신은 썼다 :

이 스크립트는 notepad.exe를 Editpad 실행 파일로 대체했지만 이제 텍스트 파일을 열려고하면 "NOTEPAD.EXE 복사본이 손상된 것 같습니다. 오류가 발생합니다. 원래 설치 패키지에서 다시 설치하십시오. "

notepad.exeWindows 보호 파일 이므로 교체가 약간 까다 롭습니다.

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

이 도움을 바랍니다. 알려주세요.


HowTo Geek 웹 사이트와 관련하여 불행히도 Windows 7은 "publisher를 확인할 수 없습니다." system32 디렉토리에서 실행하려고하면 "참고 NOTEPAD.EXE 복사본이 손상된 것 같습니다 ..."오류가 발생합니다.
Jez

이 기사를 확인하십시오. Windows : "게시자를 확인할 수 없습니다"메시지 technipages.com/… 사용 안함 솔루션입니까? 나는 그렇게 희망한다! :)
climenole

@Jez Btw는 누군가 HowToGeek 기사에서 "현재 몇 년 동안 EditPad를 사용해 왔으며 구성 메뉴에서 옵션을 확인하여 번거 로움없이 Windows 메모장을 교체하도록 설정할 수 있습니다."라고 언급했습니다. 구성 메뉴에서 이러한 옵션을 확인 했습니까?
ADTC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.