Windows11系统下劫持notepad.exe的方法

  在微软终于对 nodepad.exe 和 mspaint.exe 的界面下手,把这两个系统程序重构为UWP程序后,原有的镜像劫持替换 notepad.exe 的方法就直接失效了,经过研究,找到了亲测可行的替换方法,特此分享。

具体步骤如下:

  1. 卸载新版本的 notepad.exe。
  2. 劫持镜像。
  3. 关闭 UseFilter 开关。

以下涉及到的软件有:

  • Notepad2(待替换的软件)
  • Registry Finder(非必要,可以直接用系统自带的 regedit)
  • Windows PowerShell(系统自带)

    操作步骤

    卸载 notepad.exe 的升级UWP程序

    随便用记事本打开一个文件,然后用 taskmanager 追踪文件的位置,得到一个明显是Windows程序的目录。
    C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_10.2102.13.0_x64__8wekyb3d8bbwe\Notepad

    直接使用 PowerShell 运行以下命令
    1
    Get-AppxPackage *notepad* | Remove-AppxPackage
    执行完成之后再次用记事本打开文件,得到的目录就在C:\Windows\System32下了,任务管理器里记事本图标会变,记事本状态栏位置也会提示升级。

    劫持镜像

    先下载待替换的软件,比如我上面列出来的 notepad2 到合适的目录,然后按照老方法做镜像劫持,如果使用我推荐的 notepad2 版本可以直接在设置里进行操作。脚本中的路径可以根据实际情况自行调整。
    1
    reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /t REG_SZ /d "D:\ProgramData\Notepad2\Notepad2.exe /u /l /z" /f

    关闭 UseFilter 开关

    1
    reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "UseFilter" /t REG_DWORD /d 0 /f

    原因分析(推测)

    根据具体细节推测如下:
  1. Windows 在运行 UWP 程序的时候,跟传统 win32 程序略有不同,会有检查更新的逻辑,如果新版本存在,根本不会触发镜像劫持。
  2. UseFilter 为 1 时,会触发子目录中的 FilterFullPath 相关的逻辑,导致替换不成功,所以需要关掉。

欢迎关注我的其它发布渠道