1、Windows 7 隐藏分区的初步分析及删除方法这两天把 WINDOWS 7 进行了多次安装测试,对 Windows 7 的隐藏分区也称保留分区有了一些初步的认识,虽然对其很多机理还需要进一步的实验研究,不过思路还是比以前明晰多了,本文就先把知道总结一下,隐藏分区是可以删除的,但是网上的很多转载方法,可能对7000 前后的版本或许有效,但是对于 MSDN 的 7600 版本还是有点问题。一、Windows 7 的隐藏分区情况介绍我们在安装 Windows 7 的时候,如果您的 C 盘不是提前分区好,在安装时候让Windows 7 分区安装,默认将会分出一个首要的系统保留分区(System Re
2、served Bitlocker partition),Windows 7 会根据硬盘大小划出 100M 或 200M 的隐藏分区。之前天缘一直建议不要轻易删除,主要是因为该分区的参数“有些怪异”,尤其是 DOS 很多分区管理软件都会识别错误,经过天缘的测试已经明白一二,但想搞清楚具体原理可能不是那么容易的事,因为你都弄清楚了,windows 7 的加密机制就打水漂了。下面来看一下这个隐藏分区的一些特征,天缘双硬盘,windows 7 安装在第二块硬盘上,所以分区盘符表较大。图中盘符 F 就是 100M 的系统保留分区,该分区在 Windows 7 上是隐藏的,但是在其它系统下显示并非是隐藏的
3、,也可以自动分配驱动器号,由于测试太快就没专门查该分区的其他状态是不是标准的,下次留意看一下。在 Windows 7 如果安装带有系统保留分区,那么默认的 C 盘将被修改为非活动分区 00,而系统保留分区则是 80 活动分区。在 MBR 的分区表中仍然是按照把系统盘当主盘(分区表信息标志为 00A3140D)。再看一下该保留分区的起始扇区非常怪异的,从柱面 0 磁头 32 扇区 33 开始,天缘做过多次安装,每次都是从这个位置开始,暂不清楚在其他硬盘上该位置是否相同,尤其是 200M保留分区下的 windows 7 情况,如有遇到,欢迎留言反馈一下,是否也是柱面 0 磁头 32 扇区33 开始
4、的保留分区。本来按照标准的第一分区应该是从柱面 0 磁头 1 扇区 1 开始的,根据 C/H/S 到 LBA 的换算公式,换算后得到柱面 0 磁头 1 扇区 1 到柱面 0 磁头 32 扇区 33 之间总共 2048-63=1985个扇区,大约 1M 的空间被隐藏掉,这 1M 的空间在各分区上层都是看不到的。保留分区中有 boot 目录、bootmgr、BOOTSECT.BAK 三个文件(文件夹),当然这些可以在 Windows 7 上使用 c:windowssystem32bcdboot c:windows /s c:命令得到,如果使用 bitlocker 加密之后就不知道了,还没试过。一旦
5、把这个隐藏分区删除掉,那么空闲空间会立即变成从柱面 0 磁头 1 扇区 1 开始,也就是说对于分区管理软件,该 1M 空间就是按照空闲空间来处理,实际上是否是 Windows 7的 Bitlocker 一部分,测试方法也很简单,只需要在隐藏分区下,把从柱面 0 磁头 1 扇区 1 到柱面 0 磁头 32 扇区 33 之间,间断或部分以 0 填充再确认 bitlocker 是否工作正常、Windows 7 是否启动正常并支持修复功能就可以看出来(暂未测试)。由于删除后,空闲空间会自动计入前面的 1M 空间,不会导致扇区丢失,所以这个保留分区就可以删除,删除方法网上的也有很多,几乎都是转载的甚至自
6、己都没试过就发出来。二、Windows 7 的保留分区删除方法1、网络一说,在 Windows 7 环境下,使用 diskpart 先把隐藏分区设置为非活动状态inactive,然后把 Windows 7 的系统盘(一般是 C 盘)激活 active,再运行C:windowssystem32bcdboot.exe C:windows /s C:命令,该命令目的是重新修复 C 盘的引导记录和相关文件,生成 boot 目录及语言包、BCD 等文件和根目录下的 bootmgr 启动文件。该方法的确是支持删除保留分区,但是要想合并到 C 盘就没有办法再进 Windows 7 进行修复操作了,不合并总不
7、可能扔了或合并到其它分区吧,所以这个方法纯粹是忽悠人的不推荐大家使用。2、网上二说,用 WinPE 启动系统,然后使用 Partion Manager 删除该分区,但是到把分区合并到 C 盘,并设置 C 盘为活动状态,再使用 c:windowssystem32bcdboot c:windows /s c:修复启动,估计原作者是用 7000 版本测试的,当时候是没问题,现在大家再在 Windows 7 7600 的旗舰版上测试就不灵了( bcdboot 这个文件被改了)。无论是在 PE 2.0 还是完整的 WINDOWS XP SP3 系统下,bcdboot 命令都是无法执行的,感觉可能在 PE
8、 3.0 下应该可以。提示的错误如下:A、无法定位程序输入点_except_handler4_common 于动态链接库 msvrt.dllB、无法定位程序输入点_swprintf_s 于动态链接库 msvrt.dll具体原因,天缘没有深究,此路不通就换一种方式了。所以如果大家在 PE 2.0 上已经删除了保留分区,而且机子上没有第二系统,就只有一个办法就是使用 WIN7 的 MSDN 安装盘进行修复或采用下文方式进行修复,估计 PE 3.0 应该可以直接运行,暂未测试。不推荐大家使用。3、本文提供的完整删除、合并保留/隐藏分区方法A、使用 WINPE 2.0 或 Xp、Vista 等第二系统
9、启动进入系统,随便哪个都可以,如果是WINPE,启动分区管理工具 Partion Manager,其它系统类似处理,通过上文可以看出,只管删除就可以了(实在删不了的用 Unlocker、冰刃、粉碎机、安全模式等都可以),如下图:B、选中系统保留分区,鼠标右键点击删除命令,确认删除需输入卷标回车即可,将100M 或 200M 的保留分区删除。C、删除后再把 Windows 7 的系统分区鼠标右键调整分区大小,然后把游标拉到最左端,就是把原删除的分区空间都合并到 Windows 7 分区去。D、点击标题栏的应用按钮,大约 6 分钟左右即可合并完毕。E、再在 Windows 7 系统分区上鼠标右键激
10、活该分区,这个步骤很重要不要漏掉了。F、然后需要进行启动修复,使用 c:windowssystem32bcdboot c:windows /s c:这个命令无法执行的,只能使用原安装光盘来修复。G、如果有安装光盘,只需要使用安装光盘启动进入启动修复模式修复即可,下面就不用看了。如果有硬盘 ISO 镜像,只需要把 Boot 目录和 bootmgr 拷贝到 Windows 7 系统盘,然后再创建一个 sources 目录,把 ISO 下 sources 目录下的 boot.win 拷贝到 C 盘下。H、然后执行 c:bootbootsect.exe /nt60 c:命令即可,然后从带 Windows 7 硬盘启动即可进入安装模式,选中修复启动就可以了。总结一下删除合并方法:删除 合并设置活动 拷贝文件执行命令 重启修复 OK。Windows 7 隐藏分区的使用及修复请参考:Windows 7 系统保留隐藏分区的使用说明及注意事项