我试图脚本消除/备份OEM分区(这只是使系统回到一个过时的版本,没有实际用途)。
在许多系统上,使用DISKPART list partition会返回更多的recovery类型分区:一个是官方的Microsoft分区(WinRE),另一个来自OEM。
第一步是安全地识别WinRE分区的位置。我在bcdedit或PS中没有找到任何直路,只找到:
$renv=(bcdedit /enum "{default}" | Select-String "^recoverysequence" | Out-String | Select-String "{.+}").Matches.Value
(bcdedit /enum $renv | Select-String "^device" | Out-String | Select-String "\[.+\]").Matches.Value这将返回如下所示的字符串:
[\Device\HarddiskVolume1]其中卷号是要在Diskpart中使用的分区。(剩余的恢复分区和OEM类型的分区可以备份)。
这是标识WinRE分区的正确过程吗?
还有更直接和/或更好的方法吗?
发布于 2019-05-10 19:58:46
有一个名为ReagentC的命令行工具,它位于路径中,因此您可以从任何管理命令提示符中调用它。
reagentc /info...will产生的一些输出如下:
Windows RE status: Enabled
Windows RE location: \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
Boot Configuration Data (BCD) identifier: 496c58c4-71cb-11e9-af8f-001c42903d2e
Recovery image location:
Recovery image index: 0
Custom image location:
Custom image index: 0此外,如果您正在编写代码来完成这项工作,则可以通过调用winapi函数来完成该工作来发现恢复分区。对于call...but来说,它是一个非常复杂的api,无论它的价值是什么,它都是带有IOCTL_DISK_GET_PARTITION_INFO_EX控制代码的DeviceIOControl。如果您没有使用C或某种定义联合的语言,这是一种痛苦。返回的结构取决于磁盘是GPT格式还是MBR格式。
如果磁盘是MBR,则返回的分区类型为0x27,如果是GPT驱动器,分区类型将是guid:de94bba4-06d1-4d40-a16a-bfd50179d6ac。
发布于 2017-08-29 14:03:28
除了使用查找-RE精简选择字符串之外
我看没有比ATM机更好的办法了。
$renv=(bcdedit /enum "{default}" | Select-String "(?<=^recoverysequence\s+)({.+})").Matches.Value
(bcdedit /enum $renv | Select-String "(?<=^device.+)\[.+\]").Matches.Value
[\Device\HarddiskVolume5]https://stackoverflow.com/questions/45939687
复制相似问题