修補 .NET Framework 失敗,併發生錯誤:存取遭拒或使用中檔案

本文可協助您解決套用修補程式時,Microsoft .NET Framework 修補失敗的問題。

原始產品版本:.NET Framework
原始 KB 編號: 2263996

徵狀

如果全域存取快取 (GAC) 中的元件檔案已鎖定或正在使用中,則可能會導致 .NET Framework 修補程序失敗。 此問題可能會因為融合處理復原的方式而造成錯誤,並可能導致檔案遭到刪除。 這會導致受控應用程式 (相依於架構元件的應用程式) 失敗。

失敗的修補程式 MSI 詳細資訊記錄檔可能包含如下的內容:

'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll',因為系統錯誤:拒絕存取。
06/22/10 11:57:26 DDSet_Status: 睡眠 100ms...
MSI () (54!70) [11:57:26:738]: Product: Microsoft .NET Framework 2.0 Service Pack 2 -- 此 Windows Installer 套件有問題。
如需詳細資訊,請參閱安裝記錄。
此 Windows Installer 套件發生問題。
如需詳細資訊,請參閱安裝記錄。
06/22/10 11:57:26 DDSet_CARetVal: 0
06/22/10 11:57:26 DDSet_Exit:InstallAssembly 以傳回值 1603 結束
MSI () (54:94) [11:57:26:758]: 使用者原則值 'DisableRollback' 為 0
MSI () (54:94) [11:57:26:758]: 計算機原則值 'DisableRollback' 為 0
動作結束時間:11:57:26:InstallExecute。 傳回值 3。

02/22/10 08:38:32 DDSet_Status: 睡眠 100ms...
02/22/10 08:38:32 DDSet_Error:無法安裝元件
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll。 IAssemblyCache-InstallAssembly> () 傳回 -2147024864。
02/22/10 08:38:32 DDSet_Error:無法安裝元件
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll',因為系統錯誤:
進程無法存取檔案,因為它正由另一個進程使用。

原因

如果套用修補程式時元件正在使用中或鎖定,則修補程式將會失敗。

解決方案

若要避免這個問題,請確保進程不會執行,而這會鎖定元件。

若要偵測是否正在使用元件,請遵循下列步驟:

  1. 下載 procexp.exe 以探索鎖定元件的進程。

  2. 啟動 procexp.exe,然後按 Ctrl+F 以開啟 [進程總管搜尋 ] 視窗。

  3. 在 [ 句柄] 或 [DLL 子字串 ] 文本框中,輸入 Assembly ,然後選取 [ 搜尋]

    此螢幕快照顯示搜尋元件的步驟。

  4. 列出的所有檔案可能會影響修補程式的安裝。 終止所有列出的進程,或關閉相關聯的應用程式。 如果要執行這項操作,請依照下列步驟執行:

    1. 在 [行程總管 搜尋 ] 視窗中選取您要終止的進程名稱,以找出進程。

    2. 以滑鼠右鍵按兩下 [行程] 窗格中的 進程 名稱。

    3. 選取 [終止行程 ] 以終止進程。

      此螢幕快照顯示終止進程的步驟。