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

J.D*_*len 7 windows iis

在新安装的Windows 10企业版1703中,我尝试通过“打开或关闭Windows功能”打开IIS功能(默认选项),但遇到以下错误:

Windows功能错误

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

Dism /Online /Enable-Feature /FeatureName:IIS-DefaultDocument /All
Run Code Online (Sandbox Code Playgroud)

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

最后,我尝试一次从“打开和关闭Windows功能”菜单中一次选择IIS元素。这一直有效,直到我尝试安装“ HTTP错误”为止,该错误再次产生了上面的窗口。

运行此命令:

Dism /Online /Enable-Feature /FeatureName:IIS-HttpErrors /All
Run Code Online (Sandbox Code Playgroud)

导致相同的错误。

我怎样才能解决这个问题?

J.D*_*len 5

触摸文件C:\inetpub\custerr\en-US\401-1.htm,在路径中创建任何缺失的目录,然后再次运行安装程序。

更多信息:

我查看了 DISM 的日志文件C:\Windows\Logs\DISM\dism.log,发现以下错误行:

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
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

我能够确定它正在寻找路径C:\inetpub\custerr\en-US\401-1.htm但找不到。果然,那条路根本就不存在。

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

希望这对某人有帮助。

  • 就我而言,在创建“C:\inetpub\custerr\en-US\401-1.htm”后,还需要创建另一个文件“C:\inetpub\wwwroot\iisstart.htm”。之后IIS就安装成功了。 (2认同)