应用审核策略配置策略时,虚拟机无响应

适用于:✔️ Windows VM

本文提供了一个步骤,用于解决在应用审核策略配置策略时虚拟机(VM)变得无响应的问题,从而阻止启动 Azure VM。

症状

使用启动诊断查看 VM 的屏幕截图时,会看到屏幕截图显示操作系统(OS)在启动期间无响应,并显示“应用审核策略配置策略”消息

屏幕截图显示启动期间 O S 无响应,并显示消息:应用审核策略配置策略。

屏幕截图显示 Windows Server 2012 O S 在启动期间无响应,并显示消息:应用审核策略配置策略。

原因

策略尝试清理旧用户配置文件时,存在冲突的锁。

注意

这仅针对于 Windows Server 2012 和 Windows Server 2012 R2。

下面是有问题的策略: 计算机配置\策略\管理模板\系统/用户配置文件\删除早于系统重启指定天数的用户配置文件。

解决方案

过程概述

提示

如果 VM 有最近的备份,可以尝试 从备份 还原 VM 以修复启动问题。

  1. 创建和访问修复 VM。
  2. 禁用策略。
  3. 启用串行控制台和内存转储收集。
  4. 重新生成 VM。
  5. 收集内存转储文件并提交支持票证。

创建和访问修复 VM

  1. 使用 VM 修复命令的步骤 1-3 来准备一个修复 VM。
  2. 使用远程桌面连接来连接到修复 VM。

禁用策略

  1. 在修复 VM 上,打开 注册表编辑器

  2. 找到键 HKEY_LOCAL_MACHINE 并从菜单中选择“ 文件 > 加载配置单元 ”。

    屏幕截图显示了在注册表编辑器中加载 Hive 的步骤。

    • 可以使用 Load Hive 从脱机系统加载注册表项。 在这种情况下,系统是附加到修复 VM 的损坏磁盘。
    • 系统范围的设置存储在HKEY_LOCAL_MACHINE,可缩写为 HKLM
  3. 在附加的磁盘中,打开 \windows\system32\config\SOFTWARE 该文件。

    • 当系统提示输入名称时,请输入 BROKENSOFTWARE
    • 若要验证 是否已加载 BROKENSOFTWARE ,请展开 HKEY_LOCAL_MACHINE 并查找添加 的 BROKENSOFTWARE 密钥。
  4. 转到 BROKENSOFTWARE 并检查 Loaded hive 中是否存在 CleanupProfiles 密钥。

    • 如果密钥存在,则 设置 CleanupProfiles 策略。 其值表示以天为单位的保留策略。
    • 如果密钥不存在, 则未设置 CleanupProfiles 策略。 在这种情况下,请跳到提交 包含内存转储文件的支持票证。
  5. 使用以下命令删除 CleanupProfiles 密钥:

    reg delete "HKLM\BROKENSOFTWARE\Policies\Microsoft\Windows\System" /v CleanupProfiles /f

  6. 使用以下命令卸载 BROKENSOFTWARE 配置单元:

    reg unload HKLM\BROKENSOFTWARE

启用串行控制台和内存转储收集

建议:在重新生成 VM 之前,请运行以下脚本来启用串行控制台和内存转储收集:

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

  2. 列出 BCD 存储数据并确定将在下一步中使用的启动加载程序标识符。

    1. 对于第 1 代 VM,请输入以下命令并记下列出的标识符:

      bcdedit /store <BOOT PARTITON>:\boot\bcd /enum

      • 在命令中,替换为 <BOOT PARTITON> 附加磁盘中包含启动文件夹的分区的字母。

        屏幕截图显示了命令的输出,其中列出了 Windows 启动加载程序下的标识符号。

    2. 对于第 2 代 VM,请输入以下命令并记下列出的标识符:

      bcdedit /store <LETTER OF THE EFI SYSTEM PARTITION>:EFI\Microsoft\boot\bcd /enum

      • 在命令中,替换为 <LETTER OF THE EFI SYSTEM PARTITION> EFI 系统分区的字母。
      • 启动磁盘管理控制台以识别标记为 EFI 系统分区的相应系统分区可能很有帮助。
      • 标识符可以是唯一的 GUID,也可以是默认 启动程序
  3. 运行以下命令:

    启用串行控制台

    bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON 
    bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
  4. 验 OS 磁盘上的可用空间是否大于 VM 上的内存大小 (RAM)。

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

    用于启用 OS 转储的建议配置:

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

    REG LOAD HKLM\BROKENSYSTEM <VOLUME LETTER OF BROKEN OS DISK>:\windows\system32\config\SYSTEM
    

    在 ControlSet001 上启用:

    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f 
    

    在 ControlSet002 上启用:

    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f 
    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f 
    

    卸载损坏的 OS 磁盘:

    REG UNLOAD HKLM\BROKENSYSTEM
    

重新生成虚拟机

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

  2. 测试 VM 是否正常启动,以确定问题是否已修复。

如果问题已修复,则策略现在在本地禁用。 对于永久性解决方案,请勿在 VM 上使用 CleanupProfiles 策略,因为它会自动删除用户配置文件。 使用不同的方法执行配置文件清理,例如计划的任务或脚本。

请勿使用此策略:Machine\Admin Templates\System\User Profiles\Delete user profiles,早于系统重启的指定天数。

现在应修复此问题

测试 VM,确保 VM 正常运行。 如果仍然遇到问题,可以继续下一部分以获取进一步的帮助。

收集内存转储文件并提交支持票证

若要解决此问题,首先需要收集崩溃的内存转储文件,然后与内存转储文件联系支持人员。 若要收集转储文件,请执行以下步骤:

将 OS 磁盘附加到新的修复 VM

  1. 使用 VM 修复命令的步骤 1-3 准备新的修复 VM。
  2. 使用远程桌面连接来连接到修复 VM。

找到转储文件并提交支持票证

  1. 在修复 VM 上,转到附加 OS 磁盘中的 Windows 文件夹。 如果分配给附加 OS 磁盘的驱动程序号标记为 F,则需要转到 F:\Windows
  2. 找到 memory.dmp 文件,然后连同内存转储文件一起提交支持票证
  3. 如果在查找 memory.dmp 文件时遇到问题,请改用 串行控制台 中的不可屏蔽中断(NMI)调用。 按照本指南 ,在此处使用 NMI 调用生成故障转储文件。

联系我们寻求帮助

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