在Windows 10上安装IIS时出现错误0x800f0922:“更改无法完成。”

问题描述:

在Windows 10企业版的新安装1703我试图在IIS的功能车削,选择默认选项,通过“启用Windows功能打开或关闭”,但遇到了错误如下图所示:在Windows 10上安装IIS时出现错误0x800f0922:“更改无法完成。”

Windows Features error

然后我尝试使用DISM安装该功能。我打开了一个管理命令提示符并输入:

Dism /Online /Enable-Feature /FeatureName:IIS-DefaultDocument /All 

这应该与安装IIS的默认功能集相同。这也失败了相同的错误代码0x800f0922。

最后,我尝试从“打开和关闭Windows功能”菜单中一次选择一个元素。这工作,直到我试图安装“HTTP错误,”再次产生上面的窗口。

运行此命令:

Dism /Online /Enable-Feature /FeatureName:IIS-HttpErrors /All 

导致同样的错误。

我该如何解决这个问题?

我认为对于位于C:\Windows\Logs\DISM\dism.log DISM日志文件,发现如下设定误差线:

2017-10-09 13:43:28, Error     DISM DISM Package Manager: PID=4280 TID=14940 Failed finalizing changes. - CDISMPackageManager::Internal_Finalize(hr:0x800f0922) 
2017-10-09 13:43:28, Error     DISM DISM Package Manager: PID=4280 TID=14940 Failed processing package changes with session options - CDISMPackageManager::ProcessChangesWithOptions(hr:0x800f0922) 
2017-10-09 13:43:28, Error     DISM DISM Package Manager: PID=4280 TID=14940 Failed ProcessChanges. - CPackageManagerCLIHandler::Private_ProcessFeatureChange(hr:0x800f0922) 
2017-10-09 13:43:28, Error     DISM DISM Package Manager: PID=4280 TID=14940 Failed while processing command enable-feature. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f0922) 
2017-10-09 13:43:28, Info     DISM DISM Package Manager: PID=4280 TID=14940 Further logs for online package and feature related operations can be found at %WINDIR%\logs\CBS\cbs.log - CPackageManagerCLIHandler::ExecuteCmdLine 
2017-10-09 13:43:28, Error     DISM DISM.EXE: DISM Package Manager processed the command line but failed. HRESULT=800F0922 

以下的建议,我检查了位于C:\Windows\Logs\CBS\CBS.log CBS的日志,发现下面的行相同的时间戳:

2017-10-09 13:43:28, Error     CSI 00000096 (F) STATUS_OBJECT_PATH_NOT_FOUND #5294871# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile(flags = (AllowSharingViolation|AllowAccessDenied), handle = {provider=NULL, handle=0, name= ("null")}, da = (FILE_GENERIC_READ|DELETE|WRITE_DAC|WRITE_OWNER|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|FILE_WRITE_DATA|0x00000040), oa = @0x92431fdd18->OBJECT_ATTRIBUTES {s:48; rd:NULL; on:[38]'\??\C:\inetpub\custerr\en-US\401-1.htm'; a:(OBJ_CASE_INSENSITIVE)}, iosb = @0x92431fdd78, as = (null), fa = (FILE_ATTRIBUTE_NORMAL), sa = (FILE_SHARE_READ|FILE_SHARE_WRITE), cd = 5, co = (FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|0x00004000), eab = NULL, eal = 0, disp = Invalid) 

我能确定它在寻找的路径C:\inetpub\custerr\en-US\401-1.htm,但没有找到它。果然,这条道路根本不存在。

首先,我尝试通过给用户对象Everyone完全控制访问inetpub来测试权限。我知道,这并不理想,但测试它是值得的。我再次运行DISM命令添加HttpErrors,但仍然失败。最后,我创建了目录custerren-US以及名为401-1.htm的空白文本文件,并且最后一次尝试了DISM。该文件夹立即填充其余的HTTP错误页面并完成安装。

希望这可以帮助别人。