扫码打开虎嗅APP
本文来自微信公众号:差评 (ID:chaping321),作者:施昂,编辑:米罗,题图来自:视觉中国
不知道现在还有多少人在用Windows 10呢?
前两天Windows 10 20H2的系统更新出事了,不少小伙伴更新完之后跑到知乎上大喊:我的桌面呢?
图片源自知乎 @ 风筝
这些丢了桌面的小伙伴一番摸索之后发现,自己电脑上的explorer.exe程序不见了。
给不知道的小伙伴解释一下,在Windows 11之前,explorer这个系统程序总管电脑里的任务栏、桌面、开始菜单以及文件管理器。
它没了,桌面自然就没了。
在一番追查之后,大家发现这个系统组件居然是被自己装的第三方杀毒软件火绒给杀掉的!
好好的,为啥原本该给系统当保安的火绒会突然开始反过来攻击“自己人” ,把更新之后的系统组件给删了呢?
抱着好奇,世超接着往下翻,看看有没有大佬来分析一下到底是怎么回事。
结果不看不要紧,一看更迷惑了——整个乌龙事件不仅涉及刚才我们谈到的主角Windows和火绒,竟然还有一个看起来八竿子打不着的360 。
不知道大家有没有注意过,从Windows 10开始,底部任务栏默认状态下会有一个搜索框。
显然Windows并不满足于任务栏搜索之前的功能,所以在里面加入了不少资讯、兴趣类的内容。
360也看上了任务栏这个“好地段” ,往本就不大的任务栏里也塞入了自己的搜索栏。
图片源自知乎@大贤者初春令月
一山肯定不能容二虎,任务栏就这么大,360再强插一脚进来很难不出现问题。
据有的小伙伴儿说,这两个功能都启用的时候,会有概率死机、崩溃。
Windows自然不能放着这样的事情不管,但它不知道出于什么原因,没有对360重拳出击,反而是出了个补丁,来避让360 。
根据知乎用户@Henryzhao分析,Windows 10的这个补丁特地在任务栏里做了一个叫“IsHijackingProcessRunning” ( 劫持程序是否运行 )的函数检查360进程运行情况。
大家可以看一下截图中的检测函数代码。
它扫描的360 Safe、ZhuDongFangYu这些,都是360系程序的经典进程。
如果检测到360的产品正在运行,就会主动让Windows自己的任务栏资讯功能做出避让,也就是代码中的SellFeedsCampain=0。
这样做避免了出现360的搜索栏和Windows任务栏相互冲突的情况。
但是Windows的这段代码,本身就是新加入的内容,实现的又是检测其他进程这么敏感的动作,加上名字里“劫持”这个词听起来也很敏感,所有的因素叠加起来很自然就引起了火绒的注意。
最后的结果就是杀毒软件火绒把Windows的这个补丁行为直接当成了病毒来处理,给杀掉了。
然后大家的桌面就没了。
不过火绒这边的动作也非常快,很快就发了公告,更新完特征库了。
所以大家现在可以放心更新系统了。
回过头来看,整个事情无非是360想要强行在系统任务栏里贴赚流量,结果和微软自家搞的流量口子冲突了。
微软想着给 360 腾位置,反而被火绒误杀了。
说来也巧,这种系统给应用擦屁股的行为其实并不是第一次出现。
我们大家熟悉的iPhone和微信,也有过这么一档子乐子。
苹果之前就发现,微信的性能监控方案里调用了一个系统功能API——stack_logging_enable_logging。
这个API在很早之前的iOS版本当中可以启用堆栈日志,但是后来苹果把这个功能迁移到了别的API上,stack_logging这个API就没有任何实际意义了。
然而微信的程序员并没有随着苹果在系统中做出的调整来调整自己的代码,依旧会在微信中调用stack_logging。
结果就导致苹果的遥测后台会收到大量的“无效API调用”报错。
虽然这个报错不会对App的正常使用造成任何影响,但估计全中国2亿多的iPhone用户都在跟苹果“报错” ,把苹果后端的工程师也给看无语了,所以后来的iOS更新当中,又特地把这个API作为一个“空壳子”加了回来。
这一次,苹果工程师直接把stack_logging_enable_logging的注释改成了:这串 API 什么用也没有,鬼知道为什么微信还在调用它。
然后把包含这个API更新的文件命名为了“make tapi happy”(让腾讯API开心)。
很明显,这次Windows和360并没有像苹果和微信一样获得一个“开心”的结局,反而把火绒也卷了进来,闹了一个大笑话。
这里面有两家在遇到冲突的时候,没有沟通好的原因。
假如,Windows能够及时告知360并制止它这样的行为,而不是吭哧吭哧地给它打补丁擦屁股。
可能就不会有这样的笑话了。
再退一步,如果Windows和360都不往任务栏里加搜索、资讯这些牛皮癣一样的内容,问题是不是就在源头解决了呢?
本文来自微信公众号:差评 (ID:chaping321),作者:施昂,编辑:米罗