是否可以在不重新安装Windows的情况下修复错误0xc0000225?


16

我有一个使用GRUB2双重启动Gentoo Linux和Windows 7的系统。该计算机具有四个驱动器,并且Windows安装在驱动器#2的第三个(最后一个)分区上。驱动器布局如下所示:

|boot|-----------------home-----------------|-------------windows-------------|

boot并且home是Linux分区),这是一个奇怪的设置,但始终有效,直到我决定使用Gparted缩小Windows分区。新的布局是:

|boot|-----------------------home-----------------------|-------windows-------|

更改了这些分区之后,当我在GRUB2中选择Windows选项并将其移交给Windows Bootloader时,我收到错误消息:

Windows启动管理器  

Windows无法启动。原因可能是最近的硬件或软件更改。 解决问题:   1.插入Windows安装光盘,然后重新启动计算机。   2.选择您的语言设置,然后单击“下一步”。   3.单击“修复计算机”。 如果没有此光盘,请联系系统管理员或计算机 制造商寻求帮助。   状态:0xc0000225   信息:由于无法访问必需的设备,引导选择失败。

对于这种情况,我并不感到特别惊讶,但是我想知道是否可以在不重新安装Windows的情况下解决此问题。

我尝试使用Windows安装DVD(特别是Windows 7升级DVD)引导计算机。选择语言和键盘并单击“修复此计算机”后,“系统恢复选项”屏幕未检测到Windows分区。无论如何,我都可以单击“下一步”,然后使用无法修复问题的启动修复,或尝试使用命令行工具,即bootrec(由多个网站建议)sfc,和chkdsk。他们都没有改变。我仍然收到相同的错误消息。(有关详细输出,请参见下文。)

同样,按照类似问题的建议,我尝试使用TestDisk中的“ Rebuild BS”(重建启动扇区)功能,该功能在Linux下运行,作用于Windows分区。那也没有改变我得到的错误。

我没有在任何一个分区上看到任何数据损坏的迹象,并且驱动器没有遭受任何物理损坏,因此可以肯定地确定分区布局的更改是导致此错误的原因。我想Windows必须在其文件系统(注册表?)中的某个位置存储起始扇区和/或分区大小,这建议从原理上讲应该可以通过在文件中的几个字节中打乱几个字节来解决此问题。但是哪个文件?还是有更复杂的东西?

如果有帮助,请参见以下对应于Windows的GRUB2配置部分:

menuentry 'Windows 7 (loader) (on /dev/sdb3)' --class windows --class os $menuentry_id_option 'osprober-chain-1F9948EB30A986A0' {
        insmod part_msdos 
        insmod ntfs
        set root='hd1,msdos3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos3 --hint-efi=hd1,msdos3 --hint-baremetal=ahci1,msdos3  1F9948EB30A986A0
        else
          search --no-floppy --fs-uuid --set=root 1F9948EB30A986A0
        fi
        chainloader +1
}

同样,理想情况下,我正在寻找一种无需重新安装Windows即可解决此问题的方法。如果这不可能,那么重新安装是可以接受的计划B,但我自己可以解决。


这是我使用Windows 7安装DVD引导进入修复环境时的命令提示符会话的记录。为了便于阅读,我删除了一些空白行。以下是所有其他驱动器已断开连接的情况

>bootrec /fixmbr
The operation completed successfully,

>bootrec /fixboot
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

>bootrec /scanos
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1]  C:\Windows
The operation completed successfully.

>bootrec /rebuildbcd
Scanning all disks for Windows installations.
Please wait, since this may take a while...
Successfully scanned Windows installations.
Total identified Windows installations: 1
[1]  C:\Windows
Add installation to boot list? Yes(Y)/No(N)/All(A):y
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

>sfc /verifyonly /offwindir=C:\Windows /offbootdir=C:\
Beginning system scan.  This process will take some time.
Windows Resource Protection did not find any integrity violations.

>chkdsk C: /F
The type of the file system is NTFS.
Volume label is windows.
CHKDSK is verifying files (stage 1 of 3)...
  313344 file records processed.
File verification completed.
  1684 large file records processed.
  0 bad file records processed.
  2 EA records processed.
  158 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
  416370 index entries processed.
Index verification completed.
  0 unindexed files scanned.
  0 unindexed files recovered.
CHKDSK is verifying security descriptors (stage 3 of 3)...
  313344 file SDs/SIDs processed.
Security descriptor verification completed.
  51514 data files processed.
CHKDSK is verifying Usn journal...
  35406088 USN bytes processed.
Usn Journal verification completed.
Windows has checked the file system and found no problems.
 207510871 KB total disk space.
 104134880 KB in 251224 files.
    137304 KB in 51514 indexes.
         0 KB in bad sectors.
    423075 KB in use by the system.
     65536 KB occupied by the log file.
 102815612 KB available on disk.
      4096 bytes in each allocation unit.
  51877717 total allocation units on disk.
  25703903 allocation units available on disk.
Failed to transfer logged messages to the event log with status 50.

>diskpart
Microsoft DiskPart version 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: MININT-P92LVUL
DISKPART>list disk
  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          596 GB      0 B
DISKPART>select disk 0
Disk 0 is now the selected disk.
DISKPART>list part
  Partition ###  Type              Size     Offset 
  -------------  ----------------  -------  -------
  Partition 1    Primary             62 MB    31 KB
  Partition 2    Primary            398 GB    62 MB
  Partition 3    Primary            197 GB   398 GB

当我在连接所有驱动器的情况下运行相同的命令时,输出是相同的,只是diskpart正确显示了所有驱动器,并且所讨论的Windows分区的驱动器号D不是C(因为我在#1驱动器上有一个NTFS数据分区) )。

我会注意到,bootrec /fixmbr该驱动器将覆盖驱动器2的MBR,而将GRUB2替换为MBR。然后,当我尝试从该磁盘启动时,仅收到消息“缺少操作系统”,而不是0xc0000225错误。然后,我可以启动Linux并用于grub-install放回GRUB2 MBR,然后在GRUB2中选择Windows选项再次给出0xc0000225。


Windows克隆通常需要分区操作来破坏Windows的启动过程-如果分区在磁盘上的位置与安装期间不同,则Windows无法启动。使用您的发现会很不错:)
Basilevs 2014年


@ ali786好吧,我宁愿重新安装Windows,也不愿花20美元购买工具来解决此问题。否则,那将是一个选择。(不过,我在准备此问题时已经查看了该网站。)
David Z

如何使用安装磁盘并单击立即升级而不执行全新安装?有点重新安装,但您保留了文件。
Rsya Studios 2014年

1
@RsyaStudios图形安装程序无法检测到我现有的Windows安装,因此我认为我无法做到这一点。
David Z

Answers:


11

根据使用的方法,某些事情可能会在进度中发生变化:

分区详细信息active在diskpart中使用可使分区再次激活。

引导扇区:可以使用bootsect工具还原引导扇区。(例如。bootsect /nt60 C:

分区UUID:通过更改分区位置和/或大小,UUID会更改;因此,存储在BCD中的不可访问的UUID与分区的UUID不匹配。要解决此问题,请像这样删除并重建BCD:

bcdedit /export C:\boot\bcd.backup
ren C:\boot\bcd C:\boot\bcd.old
bootrec /rebuildbcd

原来这是正确的问题(和解决方案),但是将分区设置为“秘诀” active才是真正的关键。我需要使分区处于活动状态,以便bootrec知道将重建的BCD写入哪里。也许您可以将其添加到答案中?(bootsect事实证明,我不必使用。)
David Z

通过嵌入我的评论来更新答案;是的,分区的详细信息是这里缺少的部分。
Tamara Wijsman 2014年

“ ren C:\ boot \ bcd C:\ boot \ bcd.old”给我一个错误。应该是“ ren C:\ boot \ bcd bcd.old”
user4035 '19

3

您可能通过过多减少Windows分区而导致了该问题。

Windows有一些不可移动的文件,第三方产品可能会决定移动这些文件。将来,您应该使用Windows磁盘管理器来调整其分区大小,因为它不会破坏磁盘。最好先关闭并清空回收站,禁用分页文件以及休眠模式,以最大程度地减少特殊Windows文件的数量,并运行碎片整理程序,将所有文件压缩到Windows XP的开头。磁盘。

就是说,您可以进行修复安装来修复Windows 7。这种温和的安装方式将修复您当前安装的Windows 7,并保留您的用户帐户,数据,程序和系统驱动程序。链接的文章通过屏幕截图详细描述了该过程。之后,您可能必须处理GRUB2引导扇区的某些破坏。

如果修复安装不起作用,则Gparted破坏了您的Windows分区。在这种情况下,我希望您有备份,否则您可能必须诉诸于 Data Recovery Utilities


嗯,那是故意的。在清空回收站并进行碎片整理(尽管忘记了禁用特殊文件)之后,我尝试使用Windows首先调整分区的大小,但是它无法按我的需要减小分区大小。我将尝试修复安装,并查看其是否有效。如果没有,那么我可以从Linux挂载Windows分区,然后将任何有用的文件复制到另一个分区,因此我不必求助于数据恢复。
David Z

现在看,我发现只能从Windows内完成修复安装,因此对我没有帮助。
David Z

您可以使用Windows 7 SP1 DVD / USB来实现。以上文章中的详细信息。
harrymc 2014年

1
不,我不能。文章明确(多次)说您需要已经在运行Windows才能执行修复安装。此外,我尝试了它,从DVD引导时它不会让我使用“升级”选项。
David Z

Linux是否可以管理磁盘安装,您是否可以看到文件系统,尤其是钻入Windows文件夹甚至从中复制文件?您可以将Windows DVD引导到DOS并查看磁盘吗?还尝试从计算机上断开所有可能的设备。
harrymc

1

我尝试升级到Windows 10时在计算机上遇到了类似的问题(错误代码为0xc0000225)

问题来自空的EFI分区,该分区仍保留在我的一个驱动器上。在启动时,计算机会找到2个EFI分区:一个来自我的主操作系统,另一个对应于我几个月前卸载的旧操作系统(我从第一个硬盘驱动器移至SSD并格式化了所有内容)

也许这也是你的问题。我为您提供2种解决方案,希望它能起作用:

  • 在控制面板上,管理计算机,找到无用的EFI分区,然后将其删除
  • 在Windows安装支持下运行计算机(您可以通过下载Microsoft网站上的向导来制作一台计算机),运行安装程序,高级设置,并在显示所有卷时找到EFI分区并将其删除

我也重新安装了Windows,但是如果您删除错误的EFI分区,就足够了

从那时起,启动时没有更多问题,我的电脑可以安装W10等。

抱歉,如果我没有为您提供必须单击的确切名称,我的操作系统为法语^^


-1

在此处添加答案,因为这是为我显示的页面以及我需要的答案:

0xc0000225也可能是由于在BIOS中禁用了ACPI APIC支持(如此BIOS中标记)。我在修复Ubuntu中的挂起问题时禁用了它,但是在这种情况下,Windows需要启用它。

这也导致安装cd / usb,恢复失败并出现相同的错误,因此在启用Windows之前,Windows无法进行任何操作。

在Windows 10 Creators更新期间发生了0xc0000225,但直到在BIOS中禁用了设置之后才引导回Windows,因此看起来好像是由更新引起的,但实际上不是!整rick

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.