症状
升级到或更新Windows 10时,可能会遇到错误“我们无法更新系统保留分区”、错误代码0xc1900104或错误代码0x800f0922。
原因
系统保留分区 (SRP) 可能已满。 系统保留分区 (SRP) 是硬盘驱动器上的一个小分区,用于存储 Windows 的启动信息。 某些第三方防病毒和安全应用会写入 SRP,并可以将其填满。
解决方法
警告:这些步骤很复杂,并且存在一些风险。 最好由具有使用命令行经验的高级用户完成此作。 如果在输入这些命令时出错,可能会使设备处于未启动状态,并且可能会丢失存储在设备上的数据。
若要升级设备,需要使用下面的适当方法释放 SRP 上的 15MB 空间,然后再次尝试升级。 如果要更新Windows 10,则需要释放 13MB。 首先,确定 SRP 是 GPT 还是 MBR 分区样式:-
按 Windows 键 + R。在出现的“运行”窗口中,键入 diskmgmt.msc,然后按 Enter。
-
按住或右键单击包含 SRP 的磁盘 ((例如磁盘 0) ),然后选择“属性”。
-
选择“卷”选项卡。
-
分区样式:行将显示 GUID 分区表 (GPT) 或主启动记录 (MBR) 。
其次,选择所需的方法:
-
搜索 cmd。 在结果中长按或右键单击“命令提示符”,然后选择“ 以管理员身份运行”。
-
在命令提示符下,键入 mountvol y: /s ,然后按 Enter。 这将添加 Y: 驱动器号以访问系统分区。
-
通过键入 Y : 切换到 Y 驱动器,然后按 Enter。 然后,通过键入 cd EFI\Microsoft\Boot\Fonts 导航到 Fonts 文件夹。 到该处后,键入 del *.* 以删除字体文件。 系统可能会询问你是否确定继续,按 Y ,然后按 Enter 继续。
-
按 Windows 键 + R。在出现的 “运行” 窗口中,键入 diskmgmt.msc ,然后按 Enter。
-
选择标记为 “系统保留”的分区。 长按或右键单击它。
-
选择“ 更改驱动器号和路径”。
-
选择 “添加”。
-
为驱动器号输入 Y 。
-
点按或单击"确定"。
-
在“开始”菜单中,搜索 cmd。 在搜索结果中右键单击“命令提示符”,然后选择“ 以管理员身份运行”。
-
在命令提示符下,键入 Y: 并按 enter 切换到该驱动器。 然后,通过键入 cd Boot\Fonts 导航到 Fonts 文件夹。
-
键入以下内容,然后按 Enter:
takeown /d y /r /f 。注意:必须包含空格和“f”后面的句点,否则命令将无法正常工作。
-
通过键入以下内容并按 Enter,备份对驱动器的权限:
icacls Y:\* /save %systemdrive%\NTFSp.txt /c /t
注意:确保所有文件都显示为成功,没有显示为失败。
-
键入 whoami 并按 Enter,然后记录用户名。 键入以下命令,然后按 Enter:
icacls 。 /grant <从 whoami>获取的用户名 :F /t注意:不要在用户名和“:F”之间放置空格,否则命令将不起作用。
-
请确保仍位于字体位置 (Y:\Boot\Fonts) ,如步骤 8 中所述。 然后,键入 del *.* 以删除字体文件。 系统可能会询问你是否确定要继续,按 Y ,然后输入 以继续。
还原权限
-
键入以下命令,然后按 Enter:
icacls Y:\ /restore %systemdrive%\NTFSp.txt /c /t
-
可能会显示一条消息,指示某些文件在处理时失败-这是正常的,因为这些文件在备份后已被删除。
-
如果成功文件的数量为 none,则命令执行不正确;必须成功处理一些文件,然后才能继续作。
-
键入以下内容并按 Enter 将 ACL 调整回 System:
-
icacls 。 /grant system:f /t
-
键入以下命令并按 Enter,将驱动器的所有者设置回 System:
icacls Y: /setowner “SYSTEM” /t /c
-
返回磁盘管理并刷新数据,以确认 SRP 现在是否具有更大的可用空间百分比。 如果是这样,此时可以删除驱动器号。
-
右键单击 “系统保留分区”。
-
选择“ 更改驱动器号和路径”。
-
选择“Y: 驱动器”。
-
选择“ 删除”。
-
单击“确定”。
-
搜索 cmd。 在结果中长按或右键单击 “命令提示符 ”,然后选择“ 以管理员身份运行”。r。
-
在命令提示符下,键入 mountvol y: /s ,然后按 Enter。 这将添加 Y: 驱动器号以访问系统分区。
-
键入 taskkill /im explorer.exe /f ,然后按 Enter。 然后键入explorer.exe 然后按 Enter 以在管理员模式下重启资源管理器。
注意: 在此模式下,某些应用 ((如 OneNote) )将不会运行。 -
打开文件资源管理器,将 Y:\EFI\Microsoft\Boot\ 放在地址栏中,然后按 Enter。
-
选择要删除的语言文件夹并永久删除它们。 它们将由一组四个字母表示,并用连字符拆分。 例如,en-US 表示美国英语;de-DE 表示德语。
-
可选:删除 Y:\EFI\Microsoft\Boot\Fonts 处未使用的字体文件。
-
删除文件后,重新启动设备。 这将删除驱动器号,并将 explorer.exe 返回到正常模式。
这会使 SRP 的可用空间永久增加,但很小。
-
删除语言文件夹
-
按 Windows 键 + R。 在出现的 “运行” 窗口中,键入 diskmgmt.msc ,然后按 Enter。
-
选择标记为 “系统保留”的分区。 长按或右键单击它。
-
选择“ 更改驱动器号和路径”。
-
选择 “添加”。
-
为驱动器号输入 Y 。
-
点按或单击"确定"。
-
在 “开始 ”菜单中,搜索 cmd。 在搜索结果中右键单击“ 命令提示符 ”,然后选择“ 以管理员身份运行”。
-
在命令提示符下,键入 Y: 并按 enter 切换到该驱动器。
-
键入以下内容,然后按 Enter:
takeown /d y /r /f 。
-
通过键入以下内容并按 Enter,备份对驱动器的权限:
icacls Y:\* /save %systemdrive%\NTFSp.txt /c /t
-
键入 whoami 并按 Enter,然后记录用户名。 键入以下命令,然后按 Enter:
icacls 。 /grant <从 whoami>:F /t 获取的用户名注意:不要在用户名和“:F”之间放置空格,否则命令将不起作用。 -
在 文件资源管理器 中打开 SRP 驱动器并访问 Boot 文件夹,选择要删除的语言文件夹并永久删除它们。 它们将由一组四个字母表示,并用连字符拆分。 例如,en-US 表示美国英语;de-DE 表示德语。
-
-
截断 NTFS 日志
-
首先检查 NTFS 日志的大小。 在命令提示符中,键入以下内容,然后按 Enter:
chkdsk /L Y:-
如果大小小于 5000KB,则无需截断文件。
-
-
若要截断文件,请键入以下内容,然后按 Enter:
chkdsk /L:5000 /X /F -
返回到“磁盘管理”窗口。 点击或单击“ 作 ”菜单,然后选择“ 刷新”。 确认 SRP 现在是否具有更大的可用空间百分比。 如果是这样,请长按或右键单击 “系统保留分区”, 然后选择“ 更改驱动器号和路径”。 选择 “Y: ”,然后选择 “删除”。
-
-
如果截断 NTFS 日志不会增加 SRP 中的可用空间,则调整 USN 日志的大小。
-
在命令提示符中,键入以下内容,然后按 Enter:
fsutil usn queryjournal Y:-
这将以十六进制值显示大小。 将值转换为 decimal 并除以1048576,结果将以 MB 为单位。 (若要将十六进制转换为小数,请在 Windows 中打开计算器,选择“视图”菜单,然后选择“程序员”。 选择“十六进制”,输入“十六进制”值,然后选择“十二月)
-
如果日志为 30MB 或更多,请继续截断日志。
-
-
通过键入以下命令并按 Enter:
fsutil usn deletejournal /D /N Y 删除日记: -
使用新的日志大小值:
fsutil usn createjournal m=1500 a=1 Y 重新创建日志:
-
-
还原权限
-
键入以下命令,然后按 Enter:
icacls Y:\ /restore %systemdrive%\NTFSp.txt /c /t
-
可能会显示一条消息,指示某些文件在处理时失败-这是正常的,因为这些文件在备份后已被删除。
-
如果成功文件的数量为 none,则命令执行不正确;必须成功处理一些文件,然后才能继续作。
-
-
键入以下内容并按 Enter 将 ACL 调整回 System:
icacls 。 /grant system:f /t
-
键入以下命令并按 Enter,将驱动器的所有者设置回 System:
icacls Y: /setowner “SYSTEM” /t /c
-
返回磁盘管理并刷新数据,以确认 SRP 现在是否具有更大的可用空间百分比。 如果是这样,此时可以删除驱动器号。
-
右键单击 “系统保留分区”。
-
选择“ 更改驱动器号和路径”。
-
选择 “Y: 驱动器”。
-
选择“ 删除”。
-
单击“确定”。
-
这会增加 SRP 的可用空间,但会暂时增加。
-
确保具有格式化为 NTFS 的外部驱动器,其可用空间至少为 250MB。
-
按 Windows 键 + R。在出现的“运行”窗口中,键入 diskmgmt.msc,然后按 Enter。
-
选择“恢复分区”。 长按或右键单击它。
-
选择“更改驱动器号和路径”。
-
选择“添加”。
-
为驱动器号输入 Y。
-
点按或单击"确定"。
-
在“开始”屏幕中,从右侧向内轻扫并选择“搜索”超级按钮,或者仅开始键入以搜索 cmd。 在搜索结果中按住或右键单击“命令提示符”,然后选择“以管理员身份运行”。
-
在命令提示符下,键入 Y: 并按 enter 切换到该驱动器。
-
键入以下内容,然后按 Enter:
takeown /d y /r /f 。 注意 必须包含空格和“f”后面的句点,否则命令将无法正常工作。 -
键入 whoami 并按 Enter,然后记录用户名。 键入以下命令,然后按 Enter:
icacls 。 /grant <whoami>:F /t 的用户名 注意:不要在用户名和“:F”之间放置空格,否则命令将不起作用。 -
该命令完成后,键入或粘贴以下内容,然后按 Enter:
attrib -s -r -h Y:\Recovery\WindowsRE\winre.wim
-
打开文件资源管理器,并记下 (这些说明的其余部分所使用的外部驱动器的驱动器号,我们将使用示例 F: - 在这些步骤中看到 F:,它实际上意味着外部驱动器的驱动器号) 。
-
在命令提示符中,键入以下内容,然后按 Enter:
mkdir F:\Recovery\WindowsRE
-
接下来,键入以下内容,然后按 Enter:
xcopy Y:\Recovery\WindowsRE\winre.wim F:\Recovery\WindowsRE\winre.wim /h
-
通过输入以下命令,然后按 Enter 来映射新路径:
C:\Windows\System32\Taricec /SetREImage /Path F:\Recovery\WindowsRE /Target C:\Windows
-
验证复制成功后,键入以下命令,然后按 Enter:
del Y:\Recovery\WindowsRE\winre.wim /F
-
返回到“磁盘管理”窗口。 点击或单击“作”菜单,然后选择“刷新”。 确认 SRP 现在是否具有更大的可用空间百分比。 如果是,请继续升级。
-
升级完成后,将 wim 文件移回恢复分区并重新映射位置:
-
在命令提示符中,键入以下内容,然后按 Enter:
xcopy F:\Recovery\WindowsRE\winre.wim Y:\Recovery\WindowsRE\winre.wim /h
-
重新映射到原始路径。 键入以下内容,然后按 Enter:
C:\Windows\System32\Taricec /SetREImage /Path Y:\Recovery\WindowsRE /Target C:\Windows
-
-
返回到“磁盘管理”窗口。 长按或右键单击“恢复分区”,然后选择“更改驱动器号和路径”。 选择“Y:”,然后选择“删除”。