不知道差友們現在還有多少人還在用 Win 10 呢?
前兩天 Win10 20H2 的系統更新出事了,不少小夥伴更新完之後跑到知乎上大喊:
我桌面呢???
圖片源自知乎 @ 風箏
這些丟了桌面的小夥伴一番摸索之後發現,自己電腦上的 explorer.exe 程式不見了。
給不知道的小夥伴解釋一下,在 win11 之前, explorer 這個系統程式總管電腦裡的工作列、桌面、開始選單、以及檔案管理器。
它沒了,桌面自然就沒了。
再一番追查之後,大家發現這個系統元件居然是被自己裝的第三方防毒軟體火絨給殺掉的!
好好的,為啥原本該給系統當保安的火絨會突然開始反過來攻擊 “ 自己人 ” ,把更新之後的系統元件給刪了呢?
抱著好奇,世超接著往下翻,看看有沒有大佬來分析一下到底是怎麼回事。
結果不看不要緊,一看更迷惑了——這整個烏龍事件裡,不僅涉及到剛才我們談到的主角 Windows 和火絨,竟然還有一個看起來八竿子打不著的 360 。
不知道大家有沒有注意過,從 Win 10 開始,底部工作列預設狀態下會有一個搜尋框。
顯然 Windows 並不滿足於工作列搜尋之前的功能,所以在裡面加入了不少資訊、興趣類的內容。
360 也看上了工作列這個 “ 好地段 ” ,強行往工作列裡也塞入了自己的搜尋欄。
圖片源自知乎@大賢者初春令月
一山肯定不能容二虎,工作列就這麼大, 360 再強插一腳進來很難不出現問題。
據有的小夥伴兒說,這兩個功能都啟用的時候,會有機率宕機、崩潰。
Windows 自然不能放著這樣的事情不管,但它不知道出於什麼原因,沒有對 360 重拳出擊,反而是出了個補丁,來避讓 360 。
根據知乎使用者 @Henryzhao 分析, Windows 的這個補丁特地在工作列裡做了一個叫 “ 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 都不往工作列里加搜尋、資訊這些牛皮癬一樣的內容,問題是不是就在源頭解決了呢?