如何解决问题:无法扩展 C: 分区?

发布: (2025年12月28日 GMT+8 04:54)
5 min read
原文: Dev.to

Source: Dev.to

(请提供需要翻译的正文内容,我才能为您完成翻译。)

为什么会出现这种情况

当您尝试在 Windows 中扩展 C: 盘时,如果 C:未分配 空间之间存在 任何 分区(健康的、恢复的或 Linux),操作将失败。
在下面的截图中,您可以看到 磁盘管理 中的典型布局:

Disk Management view

在许多情况下,阻塞的分区是 恢复 分区,但在我的情况下,它是位于 C: 与未分配空间之间的 Ubuntu(Linux) 分区(即原来的 D: 盘空间)。

Step‑by‑Step Guide

1. Disable Windows Recovery Environment

打开 以管理员身份运行的命令提示符,执行:

reagentc /disable

这将禁用 Windows 恢复环境 (WinRE),以便在需要时可以删除恢复分区。

2. Launch DiskPart

diskpart

3. Identify the Disk and Partitions

list disk               # 显示所有磁盘 – 通常你会使用磁盘 0
select disk 0
list partition          # 显示所选磁盘上的每个分区

你会看到类似下面截图的内容:

DiskPart partition list

⚠️ 接下来的步骤会导致数据丢失
如果你 不需要 Linux 系统(或恢复分区),以下步骤将永久删除它。

4. Select the Partition That Blocks the Extension

  • 如果它是 Linux 分区(如我的情况):

    select partition 6   # 每台机器的分区号可能不同。选择位于 **C:** 与未分配空间之间的那个分区。

5. Record Partition Details (Very Important)

detail partition

记录下显示的 类型IDGPT 属性。稍后重新创建分区(如果你想保留它)时需要这些值。

6. Delete the Blocking Partition

delete partition override

删除后,返回 磁盘管理,你刚才删除的分区将不再出现。

7. Extend the C: Drive

  1. 打开 计算机管理 → 磁盘管理
  2. 右键 C: 卷,选择 扩展卷…
  3. 按向导操作,将新出现的未分配空间分配给 C:

(Optional) Re‑Create the Deleted Partition

如果你删除了 恢复Linux 分区并想要恢复它(可能想要更小的大小),请按以下步骤操作:

8. Create a New Simple Volume

  1. 右键 未分配 空间 → 新建简单卷…下一步
  2. 不要分配驱动器字母或路径 – 这样可以让分区在文件资源管理器中保持隐藏。
  3. 完成向导。

9. Set the Correct Partition ID and Attributes

返回 以管理员身份运行的命令提示符diskpart,执行:

list partition
select partition 9   # 用新创建的分区号替换此处

然后应用之前保存的值:

set id=<your‑saved‑id>
gpt attributes=<your‑saved‑attributes>

<your‑saved‑id><your‑saved‑attributes> 替换为第 5 步中记录的完整字符串。执行这些命令后,磁盘管理 将显示新创建的分区,并带有正确的类型和属性。

TL;DR (快速检查清单)

步骤操作
1reagentc /disable
2diskpart
3list diskselect disk 0list partition
4select partition X (X = Linux 或 Recovery 分区)
5detail partition记录 ID 与属性
6delete partition override
7在磁盘管理中 → 扩展卷C:
8 (可选)重新创建已删除的分区(无驱动器字母)
9 (可选)set id=… & gpt attributes=… 以恢复原始类型

支持

如果您觉得本指南有帮助,欢迎请我喝咖啡 😇

注意: 最后,如果您在第 1 步中禁用了 Windows 恢复环境,请不要忘记使用 reagentc /enable 重新启用它。

恢复分区示意图

Back to Blog

相关文章

阅读更多 »

Windows 钩子很奇怪

Hook 程序 cpp LRESULT CALLBACK KeyboardProc int nCode, WPARAM wParam, LPARAM lParam { if nCode == HC_ACTION && wParam == WM_KEYDOWN { KBDLLHOOKSTRUCT kb = KB...