根据 UEFI 规范版本 3.6.0 第 5 章中的 GPT 部分,每个 GPT 分区条目在字节偏移量 16 处都有一个唯一的 GUID。我的问题可以分为两部分:
- Windows 是否提供任何用于安全修改唯一分区 GUID 的工具?
- 假设问题 1 的答案是否定的,那么在手动执行时我必须考虑什么?在系统运行时,我可以通过从内核空间写入 \\.\PhysicalDriveX 来安全地执行此操作吗?在启动时使用 EFI 驱动程序怎么样?
附言:没有其他方法可以实现我的目标,所以没有必要留下善意但最终无用的评论来问我为什么要这样做或者是否考虑过其他选择。
答案1
注意:如果分区的 UUID 发生更改,并且该分区涉及启动过程,则必须相应地更改 BCD,因为分区是在 BCD 中由这些 UUID 指定的。
此外,驱动器号被分配给 Windows 注册表中 HKLM\System\Mounted Devices 的 UUID。
分区编辑器软件可以随意更改 UUID,这不会影响正在运行的 Windows,但可能会(如上所述)影响可启动性和驱动器号。
我相信您已经意识到,仅仅使用十六进制编辑器更改偏移量 16 处的 UUID 是行不通的,因为 GPT 的有效性受校验和保护,因此您也必须重新计算它(并且必须在主 GPT 和辅助/备份 GPT 上执行此操作)。或者只需使用可以为您完成此操作的分区编辑器即可。
并且因为分区表位于任何卷之外,只要您具有管理权限,就可以对其进行写入(即 \PhysicalDriveX),而无需对驱动器进行任何锁定。
答案2
帖子 如何手动更改分区类型 GUID fpmurphy 给出了这样的答案:
Windows
DiskPart
可以轻松做到这一点。选择适当的磁盘和分区,然后使用set id
子命令。
set id=7C3457EF-0000-11AA-AA11-00306543ECAC
参考和文献: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set-id