症状
升级到或更新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 导航到"字体"文件夹。 完成后,键入 del *.* 以删除字体文件。 系统可能会询问是否确实要继续,请按 Y, 然后按 Enter 继续。
-
按 Windows 键 + R。在弹出的"运行"窗口中,键入diskmgmt.msc 并按 Enter。
-
选择标记为"系统保留 "的分区。 长按或右键单击它。
-
选择"更改驱动器号和路径"。
-
选择"添加"。
-
输入 Y 作为驱动器号。
-
点按或单击"确定"。
-
从"开始"菜单,搜索cmd。 从搜索结果中右键单击"命令提示符",然后选择"以管理员角色运行"。
-
在命令提示符中,键入 Y: 并按 Enter 切换到该驱动器。 然后,通过键入 cd Boot\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 (Y:\Boot\Fonts) 8 中所述的位置。 然后,键入 del *.* 以删除字体文件。 系统可能会询问是否确实要继续,请按 Y, 然后输入 继续。
还原权限
-
键入以下命令,然后按 Enter:
icacls Y:\ /restore %systemdrive%\NTFSp.txt /c /t
-
可能会显示一条消息,指示某些文件在处理时失败 – 这是正常的,因为这些文件在备份后已删除。
-
如果成功文件的数量为无,则命令执行不正确;必须成功处理一些文件,才能继续。
-
键入以下内容,然后按 Enter,将 ACL 调整回"系统":
-
icacls 。 /grant system:f /t
-
键入以下命令并按 Enter,将驱动器的所有者设置回 System:
icacls Y: /setowner "SYSTEM" /t /c
-
返回到"磁盘管理"并刷新数据以确认 SRP 现在是否具有更大的可用空间百分比。 如果是这样,此时可以删除驱动器号。
-
右键单击"系统保留分区"。
-
选择"更改驱动器号和路径"。
-
选择"Y: 驱动器"。
-
选择"删除"。
-
单击“确定”。
-
搜索 cmd。 长按或右键单击结果中的"命令提示符",然后选择"以administrator 运行"。
-
在命令提示符下,键入 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 。
注意: 必须包含空格和"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:",然后选择"删除"。
-
-
调整 USN 日志的大小(如果截断 NTFS 日志不会增加 SRP 中的可用空间)。
-
在命令提示符下键入以下内容,然后按
Enter:fsutil usn queryjournal Y:-
这将以十六进制值显示大小。 将值转换为十进制数并除以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
-
可能会显示一条消息,指示某些文件在处理时失败 – 这是正常的,因为这些文件在备份后已删除。
-
如果成功文件的数量为无,则命令执行不正确;必须成功处理一些文件,才能继续。
-
-
键入以下内容,然后按 Enter,将 ACL 调整回"系统":
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\更新 /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\更新 /SetREImage /Path Y:\Recovery\WindowsRE /Target C:\Windows
-
-
返回到"磁盘管理"窗口。 长按或右键单击"恢复分区",然后选择"更改驱动器号和路径"。 选择"Y:",然后选择"删除"。