用批处理文件阻止win10强制更新

article/2025/10/26 8:02:35
  1. win10更新下载的位置
  2. win10更新进程
  3. 隐藏窗口运行和提升执行权限
  4. 实现反复运行和开机自启

win10这个商业巨头微软的最新之作,以流氓行径著称,尤其是它的自动更新最受诟病。用户无权选择是否下载和安装更新。你选择不更新,他就在后台下载,下次开机自动安装。何况,这些更新有的没必要,有的装上反而起副作用。我之前就被装上的更新弄坏网卡驱动,重装一次系统;去年3月大范围爆发的更新bug,导致众多用户USB驱动坏掉,又重装一次系统。再后来,我知道了更新的危害,就每天手动删除那些更新安装包,结果有一次它后台下载吃掉我3GB流量。看来,强行阻止win10自动更新已成必要。

我一年多来和win10的艰苦卓绝的斗争,现在终于取得了完全的胜利,洗雪了重置两次系统的奇耻大辱(滑稽~)。下面我就把经验分享给大家,其实也没那么残酷,就是多观察,多搜索,写出一个10行左右的小脚本即可。主要功能就是,随时阻止win10更新进程,并删掉已下载的安装包。为了完整地实现上述功能,要认真地看完这篇文,虽然比较长,但这是一劳永逸的事,多好!大家最好动手写一遍,不要直接复制粘贴,这样就对这一系列命令有了解,以后做这样的脚本也得心应手。

1、win10更新下载的位置

根据我的观察以及搜索引擎的帮助,可知,win10下载的更新是一些压缩包,需要系统专门进程来引导安装。我曾经在某个更新被安装后手动卸载,但这已经迟了,其实它根本卸载不了,**关键要在它被安装之前拦截住,删掉安装包。**这些安装包在下面的路径:

C:\WINDOWS\SoftwareDistribution\Download

如果你发现这里有好多文件,就要手动把它删掉。但是,这太麻烦了。据我观察,win10更新程序玩的嗨的时候,两分钟就能运行一次,所以必须有一种自动化的删除方法。
懂DOS命令的童鞋都知道有一个del命令能帮我们删除这些文件。del命令有几个选项,我们要用到的就是/f /s /q三个选项。/f表示强制删除,/s表示递归删除目录下所有文件,/q表示不提示用户选择而直接删除。所以应当这样写:

del /f /s /q C:\WINDOWS\SoftwareDistribution\Download

如果我们在cmd命令行中输入这个命令,会反馈“拒绝访问”。这表明我们的权限不够。在Linux里面可以用sudo,win10怎么办呢?别急,反正方法已经有了,权限的事情很简单,我们稍后会专门讨论。

2、win10更新进程

刚才说了,仅仅靠删除安装包是不行的。如果你用的宽带那无所谓,如果你用手机热点,好家伙,一次下载更新需要2~3GB的流量,如果不是王卡我觉得没人承受得起。所以,还要找到win10更新的关键进程,一旦运行立即结束。我们知道结束进程的命令是taskkill,下面就来讨论这个。
win10更新有两个关键进程。这些进程不是用程序文件名来表示的,而是用服务名来表示的。服务就是后台进程,所以从文件名是找不到的,必须用taskkill命令中的一些特殊选项。
我根据CPU风扇声就能判断win10是否在下载更新(这就是常年斗争磨练出来的,比如我就打开一个office,风扇异响,那肯定是后台高消耗进程)。这时观察网速,如果没有下载任务,网速异动(比如突然飙升到最快),那无疑是更新程序在作怪。这时打开任务管理器,按网速排序,最快的那个就是关键下载程序。
这个进程我已经摸索到了,大家以后直接针对它就行。那就是dosvc服务。
还有一个win10更新主进程,叫做wuauserv服务。

不知道服务进程的小伙伴有点懵,这都是什么玩意?别着急,我们慢慢来说。
打开任务管理器,如下图

在这里插入图片描述以“服务主机”开头的进程,就是服务进程。这不是废话吗,哈哈。我们并不需要知道具体是哪一个之下的。我们刚才已经知道关键进程了,所以想办法kill掉!
taskkill命令有一个/fi选项。它是用来指定筛选器的。筛选器,顾名思义就是选择符合指定条件的进程来杀掉。所以关键在后面的筛选条件。
筛选条件不言自明,就是名称为 dosvc 的服务进程,和名称为wuauserv的服务进程。
筛选条件就是下面的格式(注意必须有引号):

"name operator value"

name叫做筛选器名称。我们要结束服务进程,所以筛选器名称就是services。
opeartor叫做运算符,包括eq–等于,ne–不等于。我们选择eq。
value叫做筛选值,这里要筛选服务,所以指定名称,那就是dosvc和wuauserv。
另外,taskkill还需要加上/f选项,表示强制结束。
所以,结束这两个进程的命令,就写成

taskkill /f /fi "services eq wuauserv"
taskkill /f /fi "services eq dosvc"

运行的时候,又是可恶的拒绝访问。好了,第三步到了,我们要新账老账一起算,解决权限问题。

3、隐藏窗口运行和提升执行权限

我们知道Linux里面有sudo命令,用来以root身份执行命令。但是Windows的cmd里面没有。你要双击运行,改成右键以管理员身份也行。但是我们要开机自启的,怎么右键呢?所以我们要请来一个更神奇的工具–vbs。
cmd中用来调用vbs脚本命令的命令(有点绕口是吧)就是mshta。这个vbs我用的不太熟,所以百度了一下,真有大神会弄。所以我直接粘贴一下,做点简单的解释。

cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",0)(window.close)&exit

第一行是进入某个特殊目录,我也不懂这个目录是什么,但和访问权限检测有关。第二行就是用vbs里面的 shellexecute 函数来提升访问权限的。
函数格式就是:

shellexecute(file, arguments, directory, operation, show)

第一个参数是要执行的文件,第二个是赋予的参数字符串,第三个是文件所在路径,第四个是管理员权限操作符runas,第五个是是否打开窗口。我们执行这种后台程序,最好的模式就是管理员身份运行,并且不弹出黑窗口,所以runas要打开,show要赋值0。
把这两行放到我们批处理文件的头部,就可以做出一个完整的脚本了。不过,还有一点需要注意,为了隐藏窗口,需要我们把运行时的echo回显器关掉,所以这两行后面再加一行

@echo off

这就完了?No。我刚才说了,win10喜欢对着干,你刚结束它又重启,而且是会开机自启的。所以,魔高一尺道高一丈,我们也得自动反复运行和开机自启。

4、实现反复运行和开机自启

反复运行这个很简单,就是用goto命令构造一个死循环。我们把刚才结束进程和删除文件的命令总结一下,把它们放到循环体中。
死循环也得有个度,不能间隔太短,不然你的CPU会炸了的。据我观察,一个更新进程10秒钟重启是不太可能的,所以我们把间隔调成10秒。
这就是timeout命令。有两个选项,/nobreak表示不等待用户按键,只等待计时器。/t用来指定延时。所以写成

timeout /nobreak /t 10

合起来就是:

:loop
taskkill /f /fi "services eq wuauserv"
taskkill /f /fi "services eq dosvc"
del /f /s /q C:\Windows\SoftwareDistribution\download
timeout /nobreak /t 10
goto loop

冒号开头的:loop表示标号,下面的goto语句就是返回标号,这就实现了反复执行。

下面来看开机自启
需要知道win10启动项所在位置。如果作为用户启动项,那就是

C:\Users\Username\Appdata\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp

username表示你的用户名。这个目录必须在窗口下从C盘起一级一级点下去,不能直接复制粘贴到地址栏,否则会权限不够拒绝访问。
我们来整合一下完整的bat文件:

cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",0)(window.close)&exit@echo off
:loop
taskkill /f /fi "services eq wuauserv"
taskkill /f /fi "services eq dosvc"
del /f /s /q C:\Windows\SoftwareDistribution\download
timeout /nobreak /t 10
goto loop

把它写在记事本里,然后保存,后缀名改为bat。双击运行一下,看看是不是没有小黑窗口了?打开任务管理器,看到有Windows命令管理程序,还有一个超时什么的,这就是成功了。
最后呢?开机自启,那我们就把这个bat放在刚才打开的那个目录里。大功告成啦!重启一下电脑,看看它有没有开机自启。注意一定要检查国产安全软件中开机启动项的设置,把刚才制作的脚本放行。不然,开机不自启那叫什么东西啊。

5、总结

我们一共用了taskkill,timeout,del,goto,mshta五种命令,并学到了开机自启等方法。其实DOS命令很强大,它可以帮我们做自动化处理,尤其是文件管理方面的工作,用户可以从繁琐、重复性的工作中解放双手,去做有意义的事情。
同时,我们也看到微软作为垄断企业的巨大权力,它可以随意控制用户的计算机。所以,发展国产操作系统也是势在必行。如果中国有足够多的优秀Linux开发者,打破微软的垄断地位也就不是不可行了。


http://chatgpt.dhexx.cn/article/tnuKmf3m.shtml

相关文章

禁止计算机更新,彻底禁止win10自动更新方法

现在基本每个小伙伴都用上Windows10的电脑,Windows10每隔一段时间会进行更新补丁,这个时候显得格外烦恼,很多用户都想要关掉,借助一些小工具来实现,但往往会发现,自动更新就像打不死的小强,不管…

彻底禁止win10更新的锅

背景:tonight,和往常一样,就在打开vmware的一瞬间……突然弹出下面这个令人懵逼致死的图: 百度搜索一通,众说纷纭,发现竟然还是win10系统的锅。 下面开始解决问题,直接上图: 这1903版…

彻底永久禁止Win10自动更新工具Windows Update Blocker v1.6 汉化版

你是否已经被一开机关机就自动更新的电脑系统折磨疯了,这还不算啥当你更新了最新版本还有可能出现各种BUG,甚至蓝屏黑屏不得不退回之前的版本。 以往的Windows10系统我们还可以通过禁止更新服务,设置一些本地组策略来禁止Windows系统的更新&…

Windows10彻底禁止更新

1. 【此电脑】--》【管理】--》【服务和应用程序】--》【服务】--》【Windows Update】,【启动类型】选择“禁用” 2. 编辑组策略 【win】【R】打开命令行,输入“gpedit.msc” 打开本地组策略(打开失败请看附录),【管…

treeSelect树组件设置父节点禁用

前言: 项目开发中需求方提了这样一个需求:下拉框数据是树形结构,但父节点禁止点选,只能点击子节点。毫无疑问,选用的是 ant design vue 组件库的 treeSelect 组件。但该组件默认每一级节点都可以进行选择,…

如何通过递归找父节点或子节点详解

前言:如何通过递归去查询父节点或子节点,相信大家在平常肯定会遇到这样的需求,这一章我们就好好研究下如何用递归去找。 目录 一、递归找父节点或子节点 二、创建一张表关系表保存上面的关系 三、递归查询父节点或子节点核心代码 四、演示…

如何获取el-tree中所有节点的父节点

<el-tree ref"tree" :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>import { throttle } from lodashexport default {data() {return {data: [{label: 一级 1,value: 1,childr…

DOM(三):节点操作——获取父子兄节点(查)、添加和删除元素节点

一、节点之间的层级&#xff1a;父子兄 节点主要 有父子兄关系 1.父节点操作 语法&#xff1a;子节点.parentNode&#xff0c;得到的是一个元素不是集合 比如我选了一个类名叫zzy的元素 var zzy document.querySelector(.zzy);那么要获取zzy 的父节点&#xff0c;只需要zz…

节点操作 ------------- 父节点

在获取元素时我们可以利用DOM提供的一系列方法获取&#xff0c;但是这些方法过于繁琐&#xff0c;不简练。所以我们学习节点操作&#xff0c;页面中所有内容都是节点&#xff0c;有文档节点&#xff0c;元素节点&#xff0c;属性节点等&#xff0c;我们主要针对研究的是元素节点…

dom获取节点(子节点、兄弟节点、父节点)

今天在做一个项目拿兄弟节点的事&#xff0c;刚开始拿不到&#xff0c;后来网上查了一下&#xff0c;于是 便找到方法了&#xff0c;下面把我的问题写出来&#xff0c;话不多说直接上问题&#xff0c; 遇到的问题是我要通过点击删除按钮删除这一行数据&#xff0c;后端给的接口…

# 如何获取父节点和子节点

文章目录 一、获取父级节点二、获取子节点1、获取子节点2、获取指定子节点 三、总结 一、获取父级节点 node.parentNode 代码如下&#xff08;示例&#xff09;&#xff1a; <!DOCTYPE html> <head>父节点操作</head> <body><div class"box&q…

JS节点操作(1) - 父节点,子节点,兄弟节点

节点操作的作用 获取元素通常使用的两种方式&#xff1a; 1. 利用DOM提供的方法获取元素 document.getElementById()document.getElementsByTagName()document.querySelector() 等等逻辑性不强&#xff0c;繁琐 2. 利用节点层级关系获取元素 利用父子兄弟节点关系获取元素…

树中的重要概念

1 基本术语及定义 1.1 根节点 根节点&#xff1a;是树中唯一没有入边的节点。 1.2 父节点 父节点&#xff1a;一个节点是其所有子节点的父节点 1.3 子节点 子节点&#xff1a;一个节点通过出边与子节点相连 1.4 兄弟节点 兄弟节点&#xff1a;具有同一个父节点的节点称…

VScode 代码注释

MAC&#xff1a; 单行注释/取消注释&#xff1a; command/ 多行注释/取消注释&#xff1a; 1.选中要注释代码块command/ 2.optionshifta 3.JsDOc注释&#xff1a;/tab** 如下图所示 常用于给方法写注释&#xff0c;写在方法上时会自动带上此方法的参数&#xff0c;而且会车自…

说说代码中的注释

*what&#xff1a; 注释&#xff0c;也是解释&#xff0c;标记。代码中的注释不会被执行&#xff01; *why&#xff1a; 方便提醒自己&#xff0c;这代码代表的是什么功能&#xff1f;当代码量很大的时候&#xff0c;非常有用。 当然&#xff0c;平时写代码就得规范&#x…

3、代码注释与编码规范

目录 一、代码注释 &#xff08;1&#xff09;单行注释 &#xff08;2&#xff09;多行注释 &#xff08;3&#xff09;文档注释 2. 编码规范 一、代码注释 &#xff08;1&#xff09;单行注释 “//”为单行注释标记&#xff0c;从符号“//”开始直到换行为止的所有内容…

关于如何优雅的做好代码注释

问题思考 作为研发同学&#xff0c;对于代码“注释”其实并不陌生。它往往作为我们代码文档的特殊补充而存在。 其实在代码文档中&#xff0c;起主要作用的因素并非注释&#xff0c;而是好的编程风格。 编程风格包括&#xff1a;良好的程序结构、易于理解的方法、有意义的变量…

VS Code - 自动生成代码注释

目录 1. 代码注释 2. 插件安装 3. 使用示例 1. 代码注释 代码注释在软件的迭代过程中举足轻重&#xff0c;所以一个规范化的代码注释也非常重要&#xff0c;在用 VS Code 中则可以使用插件来规范化代码注释。 autoDocstring: VSCode Python Docstring Generator GitHub - N…

python中如何注释代码

1、python中通过#来注释单行不需要运行的代码&#xff0c;如&#xff1a; 此时&#xff0c;被注释代码变灰色了&#xff0c;那么在执行程序时&#xff0c;该行代码就不会被运行了 2、注释多行代码用xxxxx或者"""xxxx"""来注释&#xff0c;作用同…

python 代码注释

文章目录 写在前面使用方法plainEpytextGoogleNumpyreStructuredText相关程序包其他 写在前面 如果说高效率的算法是一个项目的内核&#xff0c;那么完备的文档注释、API 接口则是项目的外壳&#xff0c;直接与客户交互。 pycharm 提供了 5 种 代码注释格式。 分别是 plain, e…