![Windows 10:sfc 和 dism 无法修复损坏](https://linux22.com/image/1467686/Windows%2010%EF%BC%9Asfc%20%E5%92%8C%20dism%20%E6%97%A0%E6%B3%95%E4%BF%AE%E5%A4%8D%E6%8D%9F%E5%9D%8F.png)
有几篇帖子涉及此方面,但回答其他问题的修复并未解决我的问题。
- Windows 10 专业版
- 从 W7 Pro 升级,然后进行了“重置”,因为我遇到了一些屏幕保护程序问题,并且想获得更干净的安装而无需重新格式化
sfc /scannow
发现损坏,但无法修复malgunbd.ttf
[CBS.log
以下]- 然后我尝试了各种
DISM
命令,首先不指定源,然后指定/Source
:Dism /Get-ImageInfo /ImageFile:"D:\sources\install.wim" Deployment Image Servicing and Management tool Version: 10.0.10240.16384 Details for image : d:\sources\install.wim Index : 1 Name : Windows 10 Pro Description : Windows 10 Pro Size : 13,736,528,128 bytes The operation completed successfully.
Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:"D:\sources\install.wim":1 /LimitAccess Deployment Image Servicing and Management tool Version: 10.0.10240.16384 Image Version: 10.0.10240.16384 [==========================100.0%==========================] Error: 0x800f081f The source files could not be found. Use the "Source" option to specify the location of the files that are required to restore the feature. For more information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077 The DISM log file can be found at C:\WINDOWS\Logs\DISM\dism.log
- 上面的源是最近从 MS 下载的 ISO,我也尝试了
.cab
这里的一位海报下载的文件,但它似乎不包含相关的字体文件。
- 上面的源是最近从 MS 下载的 ISO,我也尝试了
- 我尝试
malgunbd.ttf
用另一台 W10 电脑上的相同字体文件替换它,该电脑sfc /scannow
运行没有错误,但没有用SFC
(这让我怀疑用于确定系统文件是否有效的数据库本身是否已损坏)- 我知道使用 W10 可以进行修复/重新安装,只会替换系统文件,而不会干扰以前安装的程序、设置和数据,但如果问题只是一个字体文件,那么这似乎有些小题大做。
- 然后我尝试了各种
日志
cbs.log
:2015-09-23 21:00:12, Info CSI 000050ad [SR] Cannot repair member file [l:24{12}]"malgunbd.ttf" of Microsoft-Windows-Font-TrueType-MalgunGothicBold, Version = 10.0.10240.16384, pA = amd64, nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35} in the store, hash mismatch 2015-09-23 21:00:12, Info CSI 000050b0 [SR] Cannot repair member file [l:24{12}]"malgunbd.ttf" of Microsoft-Windows-Font-TrueType-MalgunGothicBold, Version = 10.0.10240.16384, pA = amd64, nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35} in the store, hash mismatch 2015-09-23 21:00:12, Info CSI 000050b1 [SR] This component was referenced by [l:252{126}]"Microsoft-OneCore-Fonts-DesktopFonts-windows-Package~31bf3856ad364e35~amd64~~10.0.10240.16384.aa769378d5daebe8af8c9f1c3efdd70e" 2015-09-23 21:00:12, Info CSI 000050b2 [SR] This component was referenced by [l:346{173}]"Microsoft-Windows-Client-Features-Package-AutoMerged-windows~31bf3856ad364e35~amd64~~10.0.10240.16384.Microsoft-Windows-Client-Features-Package-AutoMerged-windows-Deployment" 2015-09-23 21:00:12, Info CSI 000050b5 [SR] Could not reproject corrupted file [ml:42{21},l:40{20}]"\??\C:\WINDOWS\fonts"\[l:24{12}]"malgunbd.ttf"; source file in store is also corrupted 2015-09-23 21:00:12, Info CSI 000050b8 [SR] Repair complete 2015-09-23 21:00:12, Info CSI 000050b9 [SR] Committing transaction 2015-09-23 21:00:12, Info CSI 000050be [SR] Verify and Repair Transaction completed. All files and registry keys listed in this transaction have been successfully repaired
dism.log
: (未注明来源)13:00:07, Info DISM DISM.EXE: <----- Starting Dism.exe session -----> 13:00:07, Info DISM DISM.EXE: 13:00:07, Info DISM DISM.EXE: Host machine information: OS Version=10.0.10240, Running architecture=amd64, Number of processors=8 13:00:07, Info DISM DISM.EXE: Dism.exe version: 10.0.10240.16384 13:00:07, Info DISM DISM.EXE: Executing command line: "C:\WINDOWS\system32\Dism.exe" /Online /Cleanup-Image /RestoreHealth 13:00:08, Warning DISM DISM OS Provider: PID=1912 TID=9724 Unable to set the DLL search path to the servicing stack folder. C:\Windows may not point to a valid Windows folder. - CDISMOSServiceManager::Final_OnConnect 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\PEProvider.dll - CDISMProviderStore::Internal_GetProvider 13:00:08, Warning DISM DISM Provider Store: PID=1912 TID=9724 Failed to Load the provider: C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\PEProvider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x8007007e) 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Failed to get and initialize the PE Provider. Continuing by assuming that it is not a WinPE image. - CDISMProviderStore::Final_OnConnect 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Finished initializing the Provider Map. - CDISMProviderStore::Final_OnConnect 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Getting Provider DISMLogger - CDISMProviderStore::GetProvider 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has previously been initialized. Returning the existing instance. - CDISMProviderStore::Internal_GetProvider 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Getting Provider OSServices - CDISMProviderStore::GetProvider 13:00:08, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has previously been initialized. Returning the existing instance. - CDISMProviderStore::Internal_GetProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\Wow64provider.dll - CDISMProviderStore::Internal_GetProvider 13:00:09, Warning DISM DISM Provider Store: PID=1912 TID=9724 Failed to get the IDismObject Interface - CDISMProviderStore::Internal_LoadProvider(hr:0x80004002) 13:00:09, Warning DISM DISM Provider Store: PID=1912 TID=9724 Failed to Load the provider: C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\Wow64provider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x80004002) 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\SmiProvider.dll - CDISMProviderStore::Internal_GetProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Connecting to the provider located at C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\SmiProvider.dll. - CDISMProviderStore::Internal_LoadProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Encountered a servicing provider, performing additional servicing initializations. - CDISMProviderStore::Internal_LoadProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:00:09, Info DISM DISM Provider Store: PID=1912 TID=9724 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\EmbeddedProvider.dll - CDISMProviderStore::Internal_GetProvider 13:00:09, Warning DISM DISM Provider Store: PID=1912 TID=9724 Failed to Load the provider: C:\Users\Ron\AppData\Local\Temp\D205D094-AE23-4DDE-9CF0-828A4790B1F2\EmbeddedProvider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x8007007e) 13:00:09, Info DISM DISM Package Manager: PID=1912 TID=9724 CBS session options=0x48100! - CDISMPackageManager::Internal_Finalize 13:03:08, Info DISM DISM Package Manager: PID=1912 TID=1900 Error in operation: source for package or file not found, ResolveSource() unsuccessful. (CBS HRESULT=0x800f081f) - CCbsConUIHandler::Error 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 Failed finalizing changes. - CDISMPackageManager::Internal_Finalize(hr:0x800f081f) 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 Failed processing package changes with session option CbsSessionOptionRepairStoreCorruption - CDISMPackageManager::RestoreHealth(hr:0x800f081f) 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 Failed to restore the image health. - CPackageManagerCLIHandler::ProcessCmdLine_CleanupImage(hr:0x800f081f) 13:03:08, Error DISM DISM Package Manager: PID=1912 TID=9724 Failed while processing command cleanup-image. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f081f) 13:03:08, Info DISM DISM Package Manager: PID=1912 TID=9724 Further logs for online package and feature related operations can be found at %WINDIR%\logs\CBS\cbs.log - CPackageManagerCLIHandler::ExecuteCmdLine 13:03:08, Info DISM DISM.EXE: Image session has been closed. Reboot required=no. 13:03:08, Info DISM DISM.EXE: 13:03:08, Info DISM DISM.EXE: <----- Ending Dism.exe session ----->
dism.log
: (来源:install.wim
)13:06:20, Info DISM DISM.EXE: <----- Starting Dism.exe session -----> 13:06:20, Info DISM DISM.EXE: 13:06:20, Info DISM DISM.EXE: Host machine information: OS Version=10.0.10240, Running architecture=amd64, Number of processors=8 13:06:20, Info DISM DISM.EXE: Dism.exe version: 10.0.10240.16384 13:06:20, Info DISM DISM.EXE: Executing command line: "C:\WINDOWS\system32\Dism.exe" /Online /Cleanup-Image /RestoreHealth /Source:C:\users\ron\downloads\Microsoft-Windows-Client-Features-Package-AutoMerged-base~31bf3856ad364e35~amd64~~10.0.10240.16384.cab 13:06:21, Warning DISM DISM OS Provider: PID=12608 TID=11328 Unable to set the DLL search path to the servicing stack folder. C:\Windows may not point to a valid Windows folder. - CDISMOSServiceManager::Final_OnConnect 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Attempting to initialize the logger from the Image Session. - CDISMProviderStore::Final_OnConnect 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\LogProvider.dll - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Connecting to the provider located at C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\LogProvider.dll. - CDISMProviderStore::Internal_LoadProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Found and Initialized the DISM Logger. - CDISMProviderStore::Internal_InitializeLogger 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\PEProvider.dll - CDISMProviderStore::Internal_GetProvider 13:06:21, Warning DISM DISM Provider Store: PID=12608 TID=11328 Failed to Load the provider: C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\PEProvider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x8007007e) 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Failed to get and initialize the PE Provider. Continuing by assuming that it is not a WinPE image. - CDISMProviderStore::Final_OnConnect 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Finished initializing the Provider Map. - CDISMProviderStore::Final_OnConnect 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\UnattendProvider.dll - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Connecting to the provider located at C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\UnattendProvider.dll. - CDISMProviderStore::Internal_LoadProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Encountered a servicing provider, performing additional servicing initializations. - CDISMProviderStore::Internal_LoadProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Provider has not previously been encountered. Attempting to initialize the provider. - CDISMProviderStore::Internal_GetProvider 13:06:21, Info DISM DISM Provider Store: PID=12608 TID=11328 Loading Provider from location C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\Wow64provider.dll - CDISMProviderStore::Internal_GetProvider 13:06:21, Warning DISM DISM Provider Store: PID=12608 TID=11328 Failed to get the IDismObject Interface - CDISMProviderStore::Internal_LoadProvider(hr:0x80004002) 13:06:21, Warning DISM DISM Provider Store: PID=12608 TID=11328 Failed to Load the provider: C:\Users\Ron\AppData\Local\Temp\BD1F1F9B-95B3-41C0-9336-5F3CD9D0A587\Wow64provider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x80004002) 13:06:22, Info DISM DISM Package Manager: PID=12608 TID=11328 Processing the top level command token(cleanup-image). - CPackageManagerCLIHandler::Private_ValidateCmdLine 13:06:22, Info DISM DISM Package Manager: PID=12608 TID=11328 Attempting to route to appropriate command handler. - CPackageManagerCLIHandler::ExecuteCmdLine 13:06:22, Info DISM DISM Package Manager: PID=12608 TID=11328 Routing the command... - CPackageManagerCLIHandler::ExecuteCmdLine 13:06:22, Warning DISM DISM Package Manager: PID=12608 TID=11328 CBS AddSource failed with HRESULT=0x8007007b! - CDISMPackageManager::Internal_Finalize 13:06:22, Info DISM DISM Package Manager: PID=12608 TID=11328 CBS session options=0x48100! - CDISMPackageManager::Internal_Finalize 13:08:52, Info DISM DISM Package Manager: PID=12608 TID=11404 Error in operation: source for package or file not found, ResolveSource() unsuccessful. (CBS HRESULT=0x800f081f) - CCbsConUIHandler::Error 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 Failed finalizing changes. - CDISMPackageManager::Internal_Finalize(hr:0x800f081f) 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 Failed processing package changes with session option CbsSessionOptionRepairStoreCorruption - CDISMPackageManager::RestoreHealth(hr:0x800f081f) 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 The source files could not be found; their location must be specified using the /source option to restore the feature. - GetCbsErrorMsg 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 Failed to restore the image health. - CPackageManagerCLIHandler::ProcessCmdLine_CleanupImage(hr:0x800f081f) 13:08:52, Error DISM DISM Package Manager: PID=12608 TID=11328 Failed while processing command cleanup-image. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f081f) 13:08:52, Info DISM DISM Package Manager: PID=12608 TID=11328 Further logs for online package and feature related operations can be found at %WINDIR%\logs\CBS\cbs.log - CPackageManagerCLIHandler::ExecuteCmdLine 13:08:52, Info DISM DISM Manager: PID=11312 TID=9104 Closing session event handle 0x190 - CDISMManager::CloseImageSession 13:08:52, Info DISM DISM.EXE: Image session has been closed. Reboot required=no. 13:08:52, Info DISM DISM.EXE: 13:08:52, Info DISM DISM.EXE: <----- Ending Dism.exe session ----->
答案1
我最终能够修复我的 Windows 安装并SFC
返回正常结果。
使用刚刚下载的 W10 USB 映像,我按照magicandre1981
评论中的建议进行了就地升级。
此后,有一个不同的文件已损坏且无法修复。
再次,DISM
最初没有修复此问题。但是,我能够确定有问题的文件位于C:\windows\winsxs
和C:\windows\system32
文件夹中。
由于之前的安装没有将该文件标记为损坏,因此我认为我可以将该文件的之前安装副本用作一个好文件。
在再次运行 DISM 之前,我按照目前无法访问的文章中的说明,从提升的命令提示符执行了以下命令,然后重新启动了计算机。thewindowsclub.com
我不确定是否需要重新启动,因为另一篇文章中没有提到这一点。
net stop wuauserv
cd %systemroot%\SoftwareDistribution
ren Download Download.old
net start wuauserv
net stop bits
net start bits
net stop cryptsvc
cd %systemroot%\system32
ren catroot2 catroot2old
net start cryptsvc
通过运行 DISM 并将其用作c:\windows.old\windows\winsxs
源,我能够修复存储。然后运行 SFC 导致原始文件被修复。
我不知道为什么会发生这种情况。在另一台机器上(以及不同的互联网连接/ISP),升级后的(从 W7)W10 安装在运行 SFC 时也显示文件损坏。在那台机器上,DISM 能够使用默认的 Windows 更新作为源来修复它。
答案2
我在 DISM.log 中看到此错误:
AddSource failed with HRESULT=0x8007007b!
Error in operation: source for package or file not found, ResolveSource() unsuccessful.
错误0x8007007b
意味着ERROR_INVALID_NAME
:
C:\>err 0x8007007b
# for hex 0x8007007b / decimal -2147024773
STIERR_INVALID_DEVICE_NAME stierr.h
# as an HRESULT: Severity: FAILURE (1), FACILITY_WIN32 (0x7), Code 0x7b
# for hex 0x7b / decimal 123
ERROR_INVALID_NAME winerror.h
# The filename, directory name, or volume label syntax is
# incorrect.
# 2 matches found for "0x8007007b"
确保驱动器 D: 确实是您的 DVD/已安装的 ISO 驱动器。
我将这 2 个包提取为 .cab 文件并上传到我的 OneDrive。
下载并解压到 C:\Source 中:
现在运行这个命令:
dism /online /cleanup-image /restorehealth /source:C:\Source
这有用吗?