在 Windows 7 中替换 notepad.exe

Jez*_*Jez 7 windows-7 notepad

好的,我真的很想用 Editpad 替换 Windows 7 中的默认 notepad.exe(是的,我想替换实际的可执行文件,不,我不想使用 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
Run Code Online (Sandbox Code Playgroud)

该脚本确实用 Editpad 可执行文件替换了 notepad.exe,但是现在如果我尝试打开一个文本文件,我会收到错误消息“您的 NOTEPAD.EXE 副本似乎已损坏。请尝试从原始安装包中重新安装它。” ”

我正在使用 Windows 7 64 位。我该怎么做才能强制 Windows 让我使用 Editpad 作为我的 notepad.exe 而不给我这个愚蠢的错误消息?

更新:
我想我有更多的信息可能会有所帮助。问题似乎出在我在 system32 目录中完全运行 editpad.exe。如果我用其他各种 exe 文件替换system32\notepad.exe它们运行良好,但是当我尝试editpad.exe在该目录中运行时,Windows 7 会弹出一个对话框:“无法验证发布者。您确定要运行此软件吗?” 如果我单击“运行”,则会收到“文件已损坏”错误——但前提是我在 system32 目录中运行它。我需要找到一种方法让这个 exe 在 system32 目录中运行。

ADT*_*DTC 4

我的想法是创建一个支持应用程序,可以搭载图像文件执行注册表项以正确运行 EditPad。

注意:您必须首先通过弹出的错误消息或撤消所做的更改来恢复原始Windows 记事本。否则,无论您如何尝试,Windows 都可能会不断地向您发送错误消息。

提示: Dracs 建议的 Notepad Replacer自动执行类似于下面的操作。首先尝试这样做,除非您有理由避免它,例如应用程序是闭源的。在这种情况下,您可以使用以下方法:

  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"
    )
    
    Run Code Online (Sandbox Code Playgroud)
    • 警告!START 命令后必须有空字符串"",否则您的系统可能会进入创建新命令提示符窗口的无限循环。
    • 您可能必须在第二行和第三行中验证原始记事本的路径以反映您的系统。我发现 32 位和 64 位 Windows 中的路径是相同的。路径不区分大小写,但请小心保留它们周围的引号。
    • 在 64 位 Windows 上,您可能需要在第二行和第三行之间添加此额外行:

      IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\SysWOW64\notepad.exe"=%
      
      Run Code Online (Sandbox Code Playgroud)


  2. (可选)使用Batch To Exe Converter将批处理文件编译为可执行程序。选择“不可见的应用程序”选项。

    • 如果您不想使用Batch To Exe Converter,您可以使用其他解决方案,或者您可以使用批处理文件本身来执行以下步骤,而不是编译EXE文件。但是,如果您使用批处理文件本身,您将在 EditPad 打开之前看到命令窗口短暂闪烁。

  3. 通过打开“开始”菜单并搜索(或使用“运行”命令运行)来打开注册表编辑器。regeditregedit

  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.exeDebugger

  7. 双击名为的条目,然后输入Batch To Exe ConverterDebugger生成的 EXE 文件批处理文件(如果您未使用编译器)生成的 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)。


归档时间:

查看次数:

4458 次

最近记录:

13 年,8 月 前