小插曲:Windows自动更新导致的奇葩端口占用问题
小插曲
如题。闲的没事今天想打开SillyTavern玩玩,边mapping边等Google Gemini返回回复。然后一开SillyTavern,开幕雷击:
昨天没关电脑,然后今天早上起来发现电脑自动重启了估计是,因为回到了刚开机需要输入密码的那个界面,一进桌面进程全被关了,回到了初始状态,而且Clash Verge是自动启动的。看了下设置,果然沟槽的更新了.NET Framework什么东西。
第一反应首先觉得是防火墙的问题。因为我也说不准windows这沟槽的更新到底更新了个什么,但是我防火墙几百年前就关了。去gpedit.msc管理模板/Windows 组件/Microsoft Defender 防病毒/一看,嘿。果然是给我关闭Windows Defender 防病毒给弄成未配置了。弄完,顺便把实时保护关了,自动更新也进services.msc关了,重启。
但是没有效果。所以这个时候重新把矛头指向端口被占用的问题。先试netstat -aon | findstr "8000",返回空。这个时候就知道估计是系统层面的占用了。试netsh interface ipv4 show excludedportrange protocol=tcp 。果然出现了包含8000在范围以内的协议tcp端口排除范围:
把SillyTavern的port改成34556,问题解决。
原因?
如上图,有 .NET 和 Windows 11, version 24H2 相关的更新,这些都属于会修改系统核心组件的更新。这些更新(特别是与Hyper-V、WSL、Windows Sandbox或网络堆栈相关的更新)会重置或修改系统的动态端口排除范围,以确保这些功能可以正常运行而不产生端口冲突。然后就把8000占了。
为什么要写这个
这本来是很简单的一个问题,不需要刻意写一篇Log来解决,不过我想着这命令懒得打给日后留一个备份也好。最主要的一个原因就是,骂Windows。
所以我说为什么我想用Linux,用Arch Linux或者Ubuntu,就是我对windows的容忍度已经下降到无法忍受的地步了。我说实话,我宁愿去忍受linux的一大堆bug,即便是东拼西凑的我至少能查看日志,查看透明的后台自己找问题自己修,也不想让windows给我抛出来一个莫名其妙的错误让我去猜,更不必提,有些时候它的Defender简直是矫枉过正的典范,会特么自动删我文件,他妈的这是我的电脑不是你的电脑不需要系统来自作组长,不是不方便打游戏我早就转到Linux去了(不过据说Valve的Proton不错,日后如果有突破性进展就彻底转了)。具体的我在GUI和CLI那个闲扯里面都说过了。不再赘述,单纯骂一句。真tm是受够了