背景:強制關機導致 .NET Framework 損壞,常規修復失效
系統安裝更新時強制關機,導致 .NET Framework 核心組件損壞。殺毒軟體、MSN 等依賴 .NET 的應用無法啟動。嘗試過:
- 最後一次正確配置 (F8) - 已重啟多次,失效。
- 控制台重新安裝/修復 - 卸載卡住、報錯,甚至安全模式下也無法卸載。
- 第三方卸載工具 (360、Geek Uninstaller 等) - 殘留註冊表、組件快取,重裝仍報錯。
- 系統優化工具清理註冊表/暫存檔 - 仍無法解決。
終極解決:Microsoft 官方 .NET Framework Cleanup Tool
這是微軟官方針對 .NET Framework 卸載殘留、安裝失敗、版本衝突推出的專用清理工具,支援 .NET 1.1 至 4.x,相容 Windows Vista/7/8/10/11。
下載與使用步驟
- 下載最新版:官方部落格下載頁 (搜尋
dotnetfx_cleanup_tool.zip),或直接搜尋「.NET Framework Cleanup Tool」至 GitHub/MSDN 獲取最新版 (建議下載 2011/2012 後版本支援 .NET 4)。
- 解壓並以系統管理員身分執行
cleanup_tool.exe。
- 選擇清理模式:
- All versions (推薦):清理機器上所有 .NET Framework 版本 (1.1, 2.0, 3.0, 3.5, 4, 4.5 等)。
- Specific version:僅清理指定版本 (謹慎使用,可能破壞相依應用)。
- 點擊「Cleanup Now」,工具將自動:
- 停止相關服務 (Windows Update, IIS, SQL Server 等)。
- 移除註冊表鍵值 (HKLM\SOFTWARE\Microsoft\.NETFramework, HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP 等)。
- 刪除組件快取 (
%windir%\assembly, %windir%\Microsoft.NET)。
- 清理 WinSxS 側向組件存放區殘留。
- 移除相關檔案與資料夾。
- 重新啟動電腦 (務必重啟,完成檔案鎖定釋放)。
進階補救:若清理後重裝仍失敗
極少數情況下,%windir%\assembly (GAC 快取) 權限損壞或殘留鎖定。可嘗試:
- 重新啟動進入安全模式。
- 將
C:\Windows\assembly 資料夾重新命名為 assembly.old (需取得 TrustedInstaller 權限或使用 takeown / icacls 指令)。
- 重啟回正常模式,再次執行 .NET Framework 安裝程式 (建議安裝最新版 .NET 4.8 / 4.8.1 離線安裝包)。
警告:重命名 assembly 可能導致現有 .NET 應用無法啟動,請在備份系統映像或確認可接受風險下操作。
驗證安裝成功
- 執行
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release,確認版本號 (如 528040 為 4.8)。
- 啟動先前失敗的應用 (殺毒軟體、MSN 等) 測試。
- 開發環境 (Visual Studio) 可正常建置/偵錯 .NET 專案。
預防與最佳實踐
- 避免更新過程強制關機:設定作用中時段、啟用自動重啟通知。
- 定期建立系統還原點:重大更新前手動建立。
- 開發機建議:使用 Chocolatey / Winget 管理 .NET SDK 執行階段 (
choco install dotnet-4.8-runtime dotnet-6.0-runtime),版本切換乾淨無殘留。
- 生產環境:優先部署 .NET Core / .NET 5+ (自我包含部署),減少對系統級 .NET Framework 的依賴與衝突。
總結
面對 .NET Framework 損壞且常規卸載失效,**官方 Cleanup Tool 是唯一標準、安全、完整的解決方案**。它比任何第三方卸載工具更懂 .NET 組件的註冊表結構、GAC 結構、WinSxS 關聯。配合必要的 assembly 資料夾重置 (最後手段),可 100% 恢復乾淨環境,避免重灌系統的巨大成本。