好的,我真的很想用 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 目录中运行。
我的想法是创建一个支持应用程序,可以搭载图像文件执行注册表项以正确运行 EditPad。
注意:您必须首先通过弹出的错误消息或撤消所做的更改来恢复原始Windows 记事本。否则,无论您如何尝试,Windows 都可能会不断地向您发送错误消息。
提示: Dracs 建议的 Notepad Replacer自动执行类似于下面的操作。首先尝试这样做,除非您有理由避免它,例如应用程序是闭源的。在这种情况下,您可以使用以下方法:
使用以下代码创建一个批处理文件。例如,批处理文件可以命名为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)
"",否则您的系统可能会进入创建新命令提示符窗口的无限循环。在 64 位 Windows 上,您可能需要在第二行和第三行之间添加此额外行:
IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\SysWOW64\notepad.exe"=%
Run Code Online (Sandbox Code Playgroud)
(可选)使用Batch To Exe Converter将批处理文件编译为可执行程序。选择“不可见的应用程序”选项。
EXE文件。但是,如果您使用批处理文件本身,您将在 EditPad 打开之前看到命令窗口短暂闪烁。
通过打开“开始”菜单并搜索(或使用“运行”命令运行)来打开注册表编辑器。regeditregedit
导航HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
notepad.exe如果中不存在名为 的密钥(左侧窗格中的文件夹)Image File Execution Options,请单击“编辑”>“新建”>“密钥”,然后键入notepad.exe新密钥的名称。如果它已经存在,只需导航到它即可。
如果项(右侧)Debugger中不存在名为(键入 REG_SZ)的条目,请单击编辑 > 新建 > 字符串值,然后键入新条目的名称。notepad.exeDebugger
双击名为的条目,然后输入Batch To Exe ConverterDebugger生成的 EXE 文件或批处理文件(如果您未使用编译器)生成的 EXE 文件的完全限定位置和名称。将位置用引号引起来。
"C:\Program Files\EditPad\Replacer.bat" 或 "C:\Program Files\EditPad\Replacer.exe" 其中 Replacer.bat 是批处理文件,Replacer.exe 是在步骤 2 中获得的编译后的 EXE 文件(如果有)。
通过以下方式测试设置:
如果存在任何问题,则步骤 1 中创建的批处理文件中的路径可能不正确。如果您正确遵循所有其他步骤,则应该没问题。只需验证并更正批处理文件中的路径(并根据需要重新编译 EXE)。
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |