# 百度网盘导致 Windows 资源管理器高 CPU 占用 ## 问题 起因是经常打开包含很多个小文件的代码仓库,然后 Windows 资源管理器就时不时占用 cpu 。 一开始还以为微软写的什么垃圾代码导致的,也就忍了。 但频繁的卡,搞得我也很难受,cpu 动不动就 50%,甚至 80%,而且还持续占用,要知道,我这可是 5950x 。 ## 破案 最近实在忍不了了,想看看资源管理器到底在干什么,就用 visual studio 自带的性能探查器抓了下资源管理器的 cpu 数据,火焰图在这 [https://imgur.com/a/7E4gFpn](https://imgur.com/a/7E4gFpn)    ## 为啥 为什么会占用如此高的 CPU 呢?**因为这个控件会不定时遍历一遍所有进程,至于百度网盘为什么要遍历所有进程那就不知道了。** ## 解决 > `yunshellextv164.dll` 在百度网盘的安装目录 `%appdata%/baidu/BaiduNetdisk` > > 或者 > > `C:\Users\你的用户名\AppData\Roaming\baidu\BaiduNetdisk\YunShellExtV164.dll` > > 结果是百度网盘的一个 `yunshellextv164.dll` 导致的。最后把这个 dll 重命名,重启资源管理器解决问题。 我猜是资源管理器会对每一个文件调用这个 dll ,然后这个 dll 里面又做了很多骚操作,导致疯狂占用 cpu 。 - 看网上也有人遇到同样的问题: [https://answers.microsoft.com/zh-hans/windows/forum/all/%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8/2385b6d3-375a-4db9-88af-3083a4930b5d](https://answers.microsoft.com/zh-hans/windows/forum/all/%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8/2385b6d3-375a-4db9-88af-3083a4930b5d) - [https://blog.csdn.net/u012028275/article/details/134024447](https://blog.csdn.net/u012028275/article/details/134024447) - 这个还会导致崩溃: - [https://uint128.com/2022/05/21/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E5%AF%BC%E8%87%B4%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8-explorer-%E5%B4%A9%E6%BA%83/](https://uint128.com/2022/05/21/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E5%AF%BC%E8%87%B4%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%99%A8-explorer-%E5%B4%A9%E6%BA%83/) ## 脚本 - [临时解决“百度网盘的插件导致 Windows 资源管理器持续占用高 CPU,进而导致资源管理器进程的稳定性下降、系统卡顿”的问题 (github.com)](https://gist.github.com/okatu-loli/556533c9d925b80eaff86094d5e949f9) ```bash @echo off SETLOCAL ENABLEDELAYEDEXPANSION :: 作者: 千石 :: 来源: 蓝点网(https://mp.weixin.qq.com/s/2t9TqXFHkhDcMaVXSvuxnQ) :: V2EX(https://www.v2ex.com/t/1007324#reply11) :: 开源地址: https://gist.github.com/okatu-loli/556533c9d925b80eaff86094d5e949f9 echo 作者: 千石 echo 来源: 蓝点网(https://mp.weixin.qq.com/s/2t9TqXFHkhDcMaVXSvuxnQ) echo V2EX(https://www.v2ex.com/t/1007324#reply11) echo 开源地址: https://gist.github.com/okatu-loli/556533c9d925b80eaff86094d5e949f9 :: 运行管理员模式 :: 提示用户以管理员身份运行脚本 net session >nul 2>&1 if %errorLevel% neq 0 ( echo 请以管理员身份运行此脚本。 pause exit ) :: 提示用户输入百度网盘的安装路径 SET /P BaiduNetdiskDir=请输入百度网盘的安装路径(例如 C:\Users\你的用户名\AppData\Roaming\baidu\BaiduNetdisk): :: 验证用户输入的路径 IF NOT EXIST "%BaiduNetdiskDir%" ( echo 输入的路径不存在,请检查路径是否正确。 pause exit ) :: 输出使用的路径 echo 使用的百度网盘安装路径: %BaiduNetdiskDir% :: 找到并杀死被 yunshellextv164.dll 注入的进程 echo 正在查找被 yunshellextv164.dll 注入的进程... for /f "tokens=2" %%a in ('tasklist /m yunshellextv164.dll ^| findstr /i "exe"') do ( echo 找到进程:%%a echo 正在杀死进程 %%a... taskkill /F /PID %%a echo. ) :: 搜索并尝试删除 yunshellextv164.dll echo 正在搜索并尝试删除 yunshellextv164.dll... IF EXIST "%BaiduNetdiskDir%\yunshellextv164.dll" ( del /F /Q "%BaiduNetdiskDir%\yunshellextv164.dll" echo yunshellextv164.dll 已被删除。 ) ELSE ( echo 没有找到 yunshellextv164.dll。 ) :: 启动资源管理器 echo 正在启动资源管理器... start explorer echo 脚本执行完毕。 pause ``` ## 手动 1、卸载百度云 2、**删除的方法:** > 直接删除的话会提示文件被占用,所以要结束占用的进程,才能删除对应的文件 1、打开管理员模式的命令提示符 `tasklist /m yunshellextv164.dll` 2、执行上面的命令后会显示当前已经被这个dll注入的进程PID,然后杀掉这些PID,比如 `taskkill /F /PID 1234` 3、依次将所有被注入的进程PID都杀掉后即可 4、然后到之前文件所在位置那里把dll删除,在执行此命令重启资源管理器: `taskkill /f /im explorer.exe && start explorer` ## 参考 - [Win10/11太卡?又是百度网盘 (qq.com)](https://mp.weixin.qq.com/s/2t9TqXFHkhDcMaVXSvuxnQ) - 快照 - https://pic.rmb.bdstatic.com/bjh/240913/9bcb4a0057849dac463004b36a426be66487.png - https://i3.wp.com/pic.rmb.bdstatic.com/bjh/240913/9bcb4a0057849dac463004b36a426be66487.png ## 快照 - https://pic.rmb.bdstatic.com/bjh/240913/e1e07a3bb332c3eb7e97dcb19f2931941278.png - https://i3.wp.com/pic.rmb.bdstatic.com/bjh/240913/e1e07a3bb332c3eb7e97dcb19f2931941278.png