MuMu模拟器怎么禁止自动更新?一键bat脚本阻断更新器(Win10/11)
MuMu模拟器每次打开都弹"发现新版本",点掉还会后台偷偷下载,更新完界面大改、顺手的功能不见了?这篇文章分享一个通用版bat 批处理脚本,一键阻断 MuMu 自动更新,而且随时可以一键恢复。脚本会自动定位 MuMu 安装目录,Win10 / Win11 都能用,全程操作透明、不改任何系统文件。
工具网盘下载地址(夸克网盘,点开即可转存):https://pan.quark.cn/s/66a0c468f487| 文末附完整代码,嫌下载麻烦可自己抄下来保存为.bat。
先说效果:脚本做了什么
运行脚本后你会得到三重保护,让 MuMu 的更新器彻底"罢工":
- 更新器被改名备份:
MuMuNxUpdater.exe被改名为MuMuNxUpdater.exe.disabled,原文件原样保留,随时可还原; - 同名目录占位 + 拒绝访问:在原位置创建一个与更新器同名的文件夹,并拒绝任何人写入/删除——Windows 无法"运行"一个文件夹,更新流程直接失效,连"检查更新"的提示都不会再弹;
- 防火墙兜底:新增一条出站拦截规则,就算哪天 exe 被还原了,它也联不上网。
想更新的时候再跑一次脚本选"恢复"即可,一切复原。
一键阻断 MuMu 更新的使用步骤
- 从开头给的网盘地址下载
阻断MuMu更新-通用版.bat(或复制文末完整代码自己保存,编码选 UTF-8); - 双击运行,脚本会自动弹出 UAC 提权窗口,点"是"(改名、设置 ACL、加防火墙规则都需要管理员权限);
- 脚本自动探测 MuMu 安装目录,找不到时允许手动输入;
- 看到
[1] 阻断更新(15秒后默认执行) [2] 恢复更新的选择提示——15 秒不操作默认执行阻断,也可以按 2 恢复; - 看到
[3/3] 完成即阻断成功,重新打开 MuMu 生效。
恢复方法:再次运行脚本,选[2] 恢复更新,它会自动删除目录占位、把.disabled备份改回原名、并清掉防火墙规则。
脚本原理详解:三重拦截是怎么做的
1. 备份并改名更新器
MuMu 12 的更新动作由安装目录下nx_main\MuMuNxUpdater.exe负责。脚本第一步把它改名成.disabled备份(move /y);如果更新器正在运行导致改名失败,会提示你先完全退出 MuMu 再试。
2. 同名目录占位 + ACL 拒绝访问(核心技巧)
这是脚本最有意思的一招,在原位置建一个与 exe 同名的目录:
mkdir "!UPD!" 2>nul icacls "!UPD!" /grant:r "*S-1-1-0:(RX)" icacls "!UPD!" /deny "*S-1-1-0:(W,D)"- Windows 上路径
...\MuMuNxUpdater.exe现在指向一个文件夹,任何进程都无法把它当作程序执行,更新链路自然断掉; /deny (W,D)拒绝所有人(*S-1-1-0即 Everyone 组)写入和删除,防止 MuMu 自己检测到占位后删掉重下;- 就算 MuMu 后续真的重新写入了 exe,还有防火墙规则兜底(见下一节)。
相比"改 hosts / 拦更新域名"的老方案,这种方式不依赖具体更新服务器地址,网易换 CDN 也照样有效,所以叫"通用版"。
3. 防火墙出站拦截
netsh advfirewall firewall add rule name="Block MuMuNxUpdater Outbound" dir=out action=block program="!UPD!" enable=yes profile=any按程序路径拦截出站流量,profile=any表示域/专用/公用网络全部生效。就算更新器文件被复原,它也发不出任何网络请求。
自动定位安装目录:路径/注册表/进程三重探测
很多人电脑上 MuMu 装在非默认路径,脚本按优先级依次尝试:
- 常见安装路径:遍历 C~G 盘的
X:\MuMuPlayer、X:\Program Files\Netease\MuMuPlayer-12.0、Global / Pro 版等 5 种典型布局(含 Program Files (x86)); - 注册表卸载信息:扫描 HKLM / WOW6432Node / HKCU 的 Uninstall 键,按键名和数据双重搜索
MuMu,读InstallLocation或从UninstallString反推目录; - 正在运行的进程:用 PowerShell 查
MuMuNxMain/MuMuPlayer/MuMuNxDevice进程的可执行文件路径,向上反推安装根目录。
脚本还支持只读探测模式:阻断MuMu更新-通用版.bat /detect——不提权、不做任何修改,输出ROOT=目录或NOT_FOUND,方便排查环境。
完整代码(复制保存为 .bat 即用)
注意:代码含中文,保存时编码请选UTF-8(Win10/11 记事本默认即是)。脚本没有任何联网行为,全部操作(改名/ACL/防火墙)都能用上文原理逐条核对。
@echo off setlocal EnableExtensions EnableDelayedExpansion chcp 65001 >nul title MuMu 更新阻断/恢复工具(通用版 Win10/Win11) if /i "%~1"=="/detect" goto DETECTONLY rem ============ 自动请求管理员权限(UAC) ============ net session >nul 2>&1 && goto ADMIN_OK echo 正在请求管理员权限,请在弹出的 UAC 窗口点“是”… powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs" if errorlevel 1 ( echo. echo 未获得管理员权限,未做任何更改。 pause ) exit /b :ADMIN_OK cls echo ================================================== echo MuMu 模拟器更新阻断工具(通用版) echo 原理: 备份更新器 + 目录占位拒绝访问 + 防火墙拦截 echo 适配: Win10 / Win11,自动定位安装目录 echo ================================================== echo. call :DETECT if defined ROOT goto HAVE_ROOT echo 未自动找到 MuMu 安装目录,请手动输入。 :ASKROOT set "ROOT=" set /p "ROOT=MuMu 安装目录(如 D:\MuMuPlayer 或 C:\Program Files\Netease\MuMuPlayer-12.0): " if not defined ROOT goto ASKROOT set "ROOT=!ROOT:"=!" if "!ROOT:~-1!"=="\" set "ROOT=!ROOT:~0,-1!" if exist "!ROOT!\nx_main\MuMuNxUpdater.exe" goto HAVE_ROOT echo. echo 该目录下未找到 nx_main\MuMuNxUpdater.exe,请重新输入。 goto ASKROOT :HAVE_ROOT set "ROOT=!ROOT:"=!" if "!ROOT:~-1!"=="\" set "ROOT=!ROOT:~0,-1!" echo 已定位 MuMu 目录: !ROOT! echo. choice /c 12 /n /t 15 /d 1 /m " [1] 阻断更新(15秒后默认执行) [2] 恢复更新 请选择: " if errorlevel 2 goto RESTORE goto BLOCK rem ==================== 阻断 ==================== :BLOCK set "UPD=!ROOT!\nx_main\MuMuNxUpdater.exe" set "BAK=!UPD!.disabled" set "ISDIR=" if exist "!UPD!" ( for %%F in ("!UPD!") do set "FA=%%~aF" if /i "!FA:~0,1!"=="d" set "ISDIR=1" ) echo [1/3] 处理更新器文件… if defined ISDIR ( echo 已处于目录占位阻断状态,跳过。 ) else if exist "!UPD!" ( move /y "!UPD!" "!BAK!" >nul if errorlevel 1 ( echo. echo [失败] 改名未成功: 更新器可能正在运行,请完全退出 MuMu 后重试。 pause exit /b 1 ) echo 原更新器已备份为 MuMuNxUpdater.exe.disabled ) else if exist "!BAK!" ( echo 发现此前备份,跳过改名。 ) else ( echo 未发现更新器文件,跳过。 ) if not defined ISDIR ( mkdir "!UPD!" 2>nul icacls "!UPD!" /grant:r "*S-1-1-0:(RX)" >nul 2>&1 icacls "!UPD!" /deny "*S-1-1-0:(W,D)" >nul 2>&1 echo 已创建同名目录占位并拒绝写入/删除。 ) else ( icacls "!UPD!" /deny "*S-1-1-0:(W,D)" >nul 2>&1 ) echo [2/3] 配置防火墙出站拦截… netsh advfirewall firewall delete rule name="Block MuMuNxUpdater Outbound" >nul 2>&1 netsh advfirewall firewall add rule name="Block MuMuNxUpdater Outbound" dir=out action=block program="!UPD!" enable=yes profile=any >nul if errorlevel 1 ( echo [警告] 防火墙规则添加失败,但文件级阻断仍然有效。 ) else ( echo 规则 Block MuMuNxUpdater Outbound 已就绪。 ) echo [3/3] 完成。 echo. echo - 更新器已无法运行,更新与更新检测同时失效; echo - 即使 exe 被复原,防火墙仍会拦截其联网; echo - 恢复方法: 再次运行本脚本,选择 [2] 恢复更新。 echo. pause exit /b rem ==================== 恢复 ==================== :RESTORE set "UPD=!ROOT!\nx_main\MuMuNxUpdater.exe" set "BAK=!UPD!.disabled" set "ISDIR=" if exist "!UPD!" ( for %%F in ("!UPD!") do set "FA=%%~aF" if /i "!FA:~0,1!"=="d" set "ISDIR=1" ) echo [1/2] 移除文件级阻断… if defined ISDIR ( icacls "!UPD!" /remove:d "*S-1-1-0" >nul 2>&1 rmdir /s /q "!UPD!" 2>nul if exist "!UPD!" ( echo. echo [失败] 目录占位删除未成功,请关闭占用它的程序后重试。 pause exit /b 1 ) echo 目录占位已移除。 ) else ( echo 无目录占位,跳过。 ) if exist "!BAK!" ( move /y "!BAK!" "!UPD!" >nul if errorlevel 1 ( echo [失败] 恢复备份未成功。 pause exit /b 1 ) echo 原更新器已从 .disabled 恢复。 ) else ( echo 未找到 .disabled 备份(可能从未阻断过或已处理)。 ) echo [2/2] 清理防火墙规则… netsh advfirewall firewall delete rule name="Block MuMuNxUpdater Outbound" >nul 2>&1 if errorlevel 1 ( echo 无既有规则,跳过。 ) else ( echo 防火墙规则已删除。 ) echo. echo 完成。重新打开 MuMu 后更新功能恢复。 pause exit /b rem ========== 仅探测安装目录(不提权、不改任何东西) ========== :DETECTONLY call :DETECT if defined ROOT ( echo [detect] ROOT=!ROOT! ) else ( echo [detect] NOT_FOUND ) exit /b 0 rem ==================== 安装目录探测 ==================== :DETECT set "ROOT=" rem -- 1) 常见安装路径 for %%D in (C D E F G) do ( if not defined ROOT if exist "%%D:\MuMuPlayer\nx_main\MuMuNxUpdater.exe" set "ROOT=%%D:\MuMuPlayer" if not defined ROOT if exist "%%D:\Program Files\Netease\MuMuPlayer-12.0\nx_main\MuMuNxUpdater.exe" set "ROOT=%%D:\Program Files\Netease\MuMuPlayer-12.0" if not defined ROOT if exist "%%D:\Netease\MuMuPlayer-12.0\nx_main\MuMuNxUpdater.exe" set "ROOT=%%D:\Netease\MuMuPlayer-12.0" if not defined ROOT if exist "%%D:\Program Files\Netease\MuMuPlayerGlobal-12.0\nx_main\MuMuNxUpdater.exe" set "ROOT=%%D:\Program Files\Netease\MuMuPlayerGlobal-12.0" if not defined ROOT if exist "%%D:\Program Files\Netease\MuMuPlayerPro-12.0\nx_main\MuMuNxUpdater.exe" set "ROOT=%%D:\Program Files\Netease\MuMuPlayerPro-12.0" ) rem -- 2) 32 位目录(路径含括号,单独判断) if not defined ROOT if exist "C:\Program Files (x86)\Netease\MuMuPlayer-12.0\nx_main\MuMuNxUpdater.exe" set "ROOT=C:\Program Files (x86)\Netease\MuMuPlayer-12.0" rem -- 3) 注册表卸载信息(按键名 / 按值数据,双保险) if not defined ROOT call :SCANREG "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" if not defined ROOT call :SCANREG "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall" if not defined ROOT call :SCANREG "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" rem -- 4) 正在运行的 MuMu 进程位置 if not defined ROOT call :SCANPROC if defined ROOT ( set "ROOT=!ROOT:"=!" if "!ROOT:~-1!"=="\" set "ROOT=!ROOT:~0,-1!" ) exit /b :SCANREG for /f "delims=" %%K in ('reg query %1 /s /f MuMu /k 2^>nul ^| findstr /i "HKEY_"') do call :SCANREG_KEY "%%K" if not defined ROOT for /f "delims=" %%K in ('reg query %1 /s /f MuMu /d 2^>nul ^| findstr /i "HKEY_"') do call :SCANREG_KEY "%%K" exit /b :SCANREG_KEY if defined ROOT exit /b for /f "tokens=2*" %%A in ('reg query %1 /v InstallLocation 2^>nul ^| findstr /i "InstallLocation"') do ( if exist "%%B\nx_main\MuMuNxUpdater.exe" set "ROOT=%%B" ) if defined ROOT exit /b for /f "tokens=2*" %%A in ('reg query %1 /v UninstallString 2^>nul ^| findstr /i "UninstallString"') do ( set "US=%%B" set "US=!US:"=!" set "US=!US:\uninstall.exe=!" if exist "!US!\nx_main\MuMuNxUpdater.exe" set "ROOT=!US!" ) exit /b :SCANPROC for /f "usebackq delims=" %%P in (`powershell -NoProfile -Command "(Get-Process -Name MuMuNxMain,MuMuPlayer,MuMuNxDevice -ErrorAction SilentlyContinue | Where-Object {$_.Path} | Select-Object -First 1).Path" 2^>nul`) do ( if not defined ROOT ( set "D1=%%~dpP" if "!D1:~-1!"=="\" set "D1=!D1:~0,-1!" if exist "!D1!\nx_main\MuMuNxUpdater.exe" set "ROOT=!D1!" if not defined ROOT ( for %%Q in ("!D1!\..") do set "D2=%%~fQ" if exist "!D2!\nx_main\MuMuNxUpdater.exe" set "ROOT=!D2!" ) ) ) exit /b常见问题 FAQ
Q1:会不会影响 MuMu 本体和游戏运行?不会。脚本只针对更新器MuMuNxUpdater.exe这一个文件,模拟器主程序、游戏和数据完全不受影响。
Q2:为什么阻断后连"检查更新"都不弹了?MuMu 的更新检测也是由这个更新器发起的,文件级阻断后整条更新链路都失效——这正好是你想要的效果。
Q3:以后 MuMu 大版本更新换了更新器名字怎么办?脚本按路径+注册表+进程三重定位,已适配 MuMuPlayer-12.0 / Global / Pro;如果网易真改了更新器文件名,把脚本里的MuMuNxUpdater.exe替换成新文件名即可。
Q4:提示"未自动找到 MuMu 安装目录"?直接按提示输入安装根目录(如D:\MuMuPlayer),或先用/detect参数探测一次确认路径。
Q5:打开脚本是乱码?说明文件保存时不是 UTF-8 编码:用记事本打开 → 另存为 → 编码选 UTF-8 覆盖保存即可。
Q6:脚本安全吗?全部逻辑就是move(改名备份)、icacls(权限)、netsh advfirewall(防火墙)三条系统命令的组合,不联网、不写注册表、不碰更新器以外的任何文件,代码完整公开在本文,可自行核对。
总结
本文分享了一个 MuMu 模拟器通用版更新阻断脚本:通过改名备份 + 同名目录占位拒绝访问 + 防火墙出站拦截三重手段,一键让 MuMu 不再自动更新、也不再弹更新提示,并且随时可一键恢复。相比拦域名、改 hosts 的老办法,它不依赖具体服务器地址,网易换 CDN 也照样有效,Win10/Win11 通用。工具网盘地址在文章开头和文末「相关链接」都放了一份,或者直接复制本文完整代码保存使用。如果你也被 MuMu 的强制更新困扰,收藏这篇文章就够了。
工具下载地址:https://pan.quark.cn/s/66a0c468f487
相关链接
| 名称 | 链接 |
|---|---|
https://pan.quark.cn/s/66a0c468f487 | https://pan.quark.cn/s/66a0c468f487 |