Windows 停止错误0xC0000102状态文件损坏

适用于:✔️ Windows VM

本文提供了一些步骤来解决 Windows 操作系统(OS)遇到停止错误0xC0000102(使 Azure 虚拟机(VM)无法启动的问题。

现象

使用 启动诊断 查看 VM 的屏幕截图时,屏幕截图会显示操作系统在启动期间遇到错误代码0xC0000102的消息。

屏幕截图显示了有关错误0xC0000102的详细信息。

CMD 屏幕上0xC0000102错误。

原因

错误0xC0000102是STATUS_FILE_CORRUPT_ERROR,这意味着损坏的文件阻止 VM 正确启动。 此错误代码有两个可能的原因:

  • 错误消息中显示的文件已损坏。
  • 磁盘结构已损坏且不可读。

解决方案

尝试从备份还原 VM

如果 VM 有最近的备份,可以尝试 从备份 还原 VM 以修复启动问题。 如果无法从备份还原 VM,请执行以下步骤:

  1. 创建并访问修复 VM
  2. 修复或替换损坏的文件
  3. 启用串行控制台和内存转储收集
  4. 重新生成 VM

注意

遇到此错误时,来宾操作系统无法正常运行。 需要在脱机模式下进行故障排除来解决此问题。

步骤 1:创建和访问修复 VM

  1. 按照 VM 修复过程示例 的步骤 1-3 准备修复 VM。
  2. 使用远程桌面连接连接到修复 VM。

步骤 2:修复或替换损坏的文件

按照以下步骤修复或替换损坏的二进制文件(.sys):

修复损坏的二进制文件

打开提升的 CMD 提示符并在磁盘上运行 chkdsk:

chkdsk <drive-letter>: /F

替换损坏的二进制文件

  1. 在附加的磁盘上,浏览到错误消息中显示的二进制文件的位置。

  2. 将文件从二进制名称.sys重命名为< binary-name>>.sys.old。<

  3. 在附加的磁盘上,浏览到 \Windows\WinSxS 文件夹。 然后,搜索错误消息中显示的二进制文件。 为此,请在命令提示符处运行以下命令:

    dir <binary-name> /s
    

    该命令将列出二进制文件的所有不同版本以及创建日期。 运行以下命令,将最新版本的二进制文件复制到 \Windows\System32\Drivers 文件夹:

    copy <drive>:\Windows\WinSxS\<directory-where-file-is>\<binary-name>.sys <drive>:\Windows\System32\Drivers\
    

    例如,请参阅以下控制台输出:

    E:\Windows\WinSxS>dir ACPI.sys /s 
     Volume in drive E has no label. 
     Volume Serial Number is A0B1-C2D3 
    
     Directory of E:\Windows\WinSxS\amd64_acpi.inf_0123456789abcdef_6.3.9600.16384_none_cdef0123456789ab 
    
    11/21/2014  07:48 PM            94,989 acpi.sys 
                   1 File(s)         94,989 bytes 
    
     Directory of E:\Windows\WinSxS\amd64_acpi.inf_0123456789abcdef_6.3.9600.16384_none_89abcdef01234567 
    
    11/21/2014  07:48 PM           119,547 acpi.sys 
                   1 File(s)        119,547 bytes 
    
     Directory of E:\Windows\WinSxS\amd64_acpi.inf_0123456789abcdef_6.3.9600.16384_none_456789abcdef0123 
    
    11/21/2014  04:06 PM           533,824 acpi.sys 
                   1 File(s)        533,824 bytes 
    
         Total Files Listed: 
                   3 File(s)        748,360 bytes 
                   0 Dir(s)  123,967,512,576 bytes free 
    
    E:\Windows\WinSxS>copy E:\Windows\WinSxS\amd64_acpi.inf_0123456789abcdef_6.3.9600.16384_none_cdef0123456789ab\acpi.sys E:\Windows\System32\Drivers\ 
            1 file(s) copied. 
    
    E:\Windows\WinSxS> 
    

    注意

    • 如果无法重命名系统二进制文件, 请获取文件的所有权。 此操作可让你完全访问此文件。

    • 示例控制台输出以卷 E 为例。 实际字母应反映故障驱动器(作为故障排除 VM 上的数据磁盘附加的 OS 磁盘)。

    • 如果最新的二进制文件不起作用,可以尝试使用以前的文件版本获取该组件的早期系统更新级别。

    • 如果此步骤中返回的唯一二进制文件与尝试在受影响的 VM 上替换的文件匹配,并且如果两个文件具有相同的大小和时间戳,则可以通过从具有相同 OS 的另一个工作 VM 复制损坏的文件来替换损坏的文件,如果可能,则相同的系统更新级别。

  4. 从故障排除 VM 中分离修复的磁盘。 然后, 从 OS 磁盘创建 VM。

步骤 3:启用串行控制台和内存转储收集

在重新生成 VM 之前,建议启用内存转储收集和串行控制台。 为此,请按照以下步骤操作:

  1. 以管理员身份打开提升的命令提示符会话。

  2. 使用 /ems 和 /emssettings 选项运行以下 BCDEdit 命令:

    启用串行控制台:

    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /ems {<boot-loader-identifier>} ON
    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
  3. 验 OS 磁盘上的可用空间是否大于 VM 上的内存大小 (RAM)。

    如果 OS 磁盘上没有足够的空间,请更改创建内存转储文件的位置,并将该位置引用附加到 VM 且有足够的可用空间的任何数据磁盘。 若要更改位置,请替换为 %SystemRoot% 数据磁盘的驱动器号,如 F:以下命令中的驱动器号。

    若要启用 OS 转储文件,请运行以下 加载添加卸载 命令,以使用 reg 工具实现建议的配置:

    从损坏的 OS 磁盘加载注册表配置单元:

    reg load HKLM\<broken-system> <volume-letter-of-broken-os-disk>:\windows\system32\config\SYSTEM
    

    在 ControlSet001 上启用:

    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    

    在 ControlSet002 上启用:

    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    

    卸载损坏的 OS 磁盘:

    reg unload HKLM\<broken-system>
    

步骤 4:重新生成 VM

使用 VM 修复命令的步骤 5 重新生成 VM。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区