wsappx 的 CPU 偏高時,它在忙什麼,什麼時候會停
工作管理員裡的 wsappx 不是病毒,也不是你自己裝的軟體。它是 Windows 給執行 Microsoft Store 部署和授權服務的那個服務主機起的名稱。CPU 或磁碟佔用一高,最常見的原因是應用程式市集在背景安裝、更新或解除安裝某個應用程式。這件事做完佔用就會降下來。所以要弄清的是哪個服務在忙、它在裝什麼、這項工作最後有沒有結束。
wsappx 裡跑的是什麼
主要是兩個服務。微軟的服務說明文件對它們的描述如下:
| 服務 | 服務名稱 | 微軟的說明 | 啟動類型 |
|---|---|---|---|
| AppX Deployment Service | AppXSvc |
為部署市集應用程式提供基礎支援 | 手動 |
| Client License Service | ClipSVC |
為 Microsoft Store 提供基礎支援 | 手動 |
手動的意思是按需啟動。電腦閒置時它們不該整天忙個不停。有應用程式市集的工作要做才會醒來,例如安裝或更新應用程式、解除安裝市集應用程式,或者檢查從市集購買的應用程式的授權。部署一個應用程式套件要把檔案寫到磁碟上,所以同樣一件事,除了 CPU,也可能表現成磁碟佔用偏高。
先確認是哪個服務在忙
按 Ctrl + Shift + Esc 開啟工作管理員,在處理程序頁按 CPU 排序,記下時間。如果最忙的是 wsappx 對應的服務主機,就到「詳細資料」頁找到它的處理程序識別碼,也就是那個 PID 的 svchost.exe,再看「服務」頁。那裡每個服務後面都寫著執行它的 PID。
tasklist 命令一步就能回答同一個問題。在命令提示字元裡執行:
tasklist /svc /fi "SERVICES eq AppXSvc"
tasklist /svc /fi "SERVICES eq ClipSVC"
每一列會列出映像名稱、PID 和這個處理程序裡的服務。拿 PID 和工作管理員裡佔 CPU 的那個對一下。對上 AppXSvc 說明正在部署或移除應用程式套件。對上 ClipSVC 說明是在處理市集應用程式的授權。
Mole 的狀態頁換了個角度顯示同一件事。系統工作階段裡的 Windows 服務主機會合併成一列。點開這一列的詳細資料,會按處理程序忙碌程度從高到低列出裡面的服務。AppXSvc 或 ClipSVC 直接寫著名稱,不用對著一列一模一樣的 svchost.exe 猜。這一列屬於 Windows 服務,Mole 不會給它提供結束處理程序的選項。
看應用程式市集在忙什麼
大多數 wsappx 佔用高峰都對得上市集更新。微軟說正在把應用程式更新改為自動進行,好讓安全性修補及時到位。所以你不開啟市集,更新也可能自己開始。系統內建的紙牌、To Do、Xbox 這些應用程式也是市集應用程式套件。這就是為什麼從沒在市集裡裝過東西的電腦,也會看到這個高峰。
- 開啟 Microsoft Store。
- 點「檢查更新」,看看正在下載或安裝什麼。
- 等佇列跑完,再觀察幾分鐘 wsappx。
佇列清空以後 CPU 降下來,就說明沒有問題。服務只是把自己的工作做完了。一個大型應用程式更新之後出現一次高峰是正常的。
解除安裝市集應用程式走的也是這個服務。Mole for Windows 解除安裝市集應用程式時,要求同樣交給部署服務處理。如果市集正在安裝或更新別的應用程式,Windows 會讓它排在後面,所以解除安裝一個應用程式也可能讓 wsappx 的佔用短暫升高。
真想關掉市集自動更新
如果背景更新總在不合適的時候開始,例如用著按流量計費的網路,或者正在簡報,微軟的自動更新說明給了開關的位置。開啟 Microsoft Store,點自己的頭像,選「設定」,修改「應用程式更新」。微軟也提到應用程式更新正在變成自動的,需要時可以暫停。所以你那個版本的市集裡看到的可能是暫停選項,而不是關閉開關。
這樣做是拿現在的 CPU 高峰去換以後的舊版本應用程式。市集應用程式的安全性修復就是靠這些更新送到的。折衷一點的辦法是保持自動更新,在自己方便的時候手動點一次「檢查更新」,讓這項工作在你不用電腦的時候做完。
一直降不下來
市集裡看不到任何工作,wsappx 卻連著幾個小時都很忙,就是另一種情況了。可以找這幾樣:
- 同一個應用程式在市集的下載清單裡反覆重試更新。
- 市集報錯或者下載卡住。應用程式更新失敗那篇按階段講了怎麼查。
- C 槽空間不足,應用程式套件部署會變慢甚至失敗。可以看 C 槽空間分類排查。
一次只改一樣,再用同樣的方法看一遍。某個卡住的應用程式裝完或者被移除以後 wsappx 安靜下來,原因就找到了。從 CPU 佔用一路追到具體程式的通用方法,看 Windows CPU 佔用偏高。如果一直滿的是磁碟,磁碟一直 100% 講了怎麼分清活動時間和真實讀寫。
不要這樣做
- 不要在服務管理員裡停用
AppXSvc或ClipSVC,也不要去登錄改它們的Start值。微軟說得很直接:部署服務被停用,市集應用程式就裝不上,也可能無法正常工作。授權服務被停用,從市集購買的應用程式會執行不正常。 - 不要為了讓數字好看就在工作管理員裡結束 wsappx 服務主機。這會讓正在進行的安裝或更新斷在一半。市集之後還會重新開始。
- 不要為了不再更新,就用指令碼把系統內建的市集應用程式全刪掉。有些應用程式套件是 Windows 的一部分,系統會拒絕移除。Mole for Windows 的軟體頁也不列出 Microsoft Store、應用程式安裝程式和 Windows 安全性,在那裡不會被誤刪。一次短暫的高峰不值得把系統拆開。
- 不要把短暫的高峰當成故障。盯著市集的工作佇列,觀察幾分鐘再下結論。
常見問題
wsappx 是什麼,為什麼 CPU 佔用這麼高?
它是 AppX Deployment Service 和 Client License Service 的服務主機,負責 Microsoft Store 應用程式的安裝、更新、移除和授權。CPU 偏高通常說明有市集應用程式正在更新或安裝,做完就會降下來。
可以停用 wsappx 嗎?
不建議。微軟說這些服務被停用後,市集應用程式無法部署,也可能無法正常工作,購買的市集應用程式也會執行不正常。想控制更新什麼時候發生,用市集設定裡的暫停或關閉自動更新。
wsappx CPU 佔用偏高是病毒嗎?
真正的 wsappx 服務跑在 Windows 資料夾裡的 svchost.exe 中,用 tasklist /svc 能看到服務名稱。如果佔用偏高的處理程序在別的位置,或者服務清單裡沒有 AppXSvc 和 ClipSVC,就把它當成分不出來路的程式另行排查。
我從不用 Microsoft Store,為什麼 wsappx 還在執行?
紙牌、To Do、Xbox 這些系統內建的應用程式都是市集應用程式套件。就算你從不開啟市集,它們也透過同一組服務更新。