适用于:✔️ Windows VM
本文提供了一个步骤,用于解决在应用审核策略配置策略时虚拟机(VM)变得无响应的问题,从而阻止启动 Azure VM。
症状
使用启动诊断查看 VM 的屏幕截图时,会看到屏幕截图显示操作系统(OS)在启动期间无响应,并显示“应用审核策略配置策略”消息。
原因
策略尝试清理旧用户配置文件时,存在冲突的锁。
注意
这仅针对于 Windows Server 2012 和 Windows Server 2012 R2。
下面是有问题的策略: 计算机配置\策略\管理模板\系统/用户配置文件\删除早于系统重启指定天数的用户配置文件。
解决方案
过程概述
提示
如果 VM 有最近的备份,可以尝试 从备份 还原 VM 以修复启动问题。
- 创建和访问修复 VM。
- 禁用策略。
- 启用串行控制台和内存转储收集。
- 重新生成 VM。
- 收集内存转储文件并提交支持票证。
创建和访问修复 VM
- 使用 VM 修复命令的步骤 1-3 来准备一个修复 VM。
- 使用远程桌面连接来连接到修复 VM。
禁用策略
在修复 VM 上,打开 注册表编辑器。
找到键 HKEY_LOCAL_MACHINE 并从菜单中选择“ 文件 > 加载配置单元 ”。
- 可以使用 Load Hive 从脱机系统加载注册表项。 在这种情况下,系统是附加到修复 VM 的损坏磁盘。
- 系统范围的设置存储在HKEY_LOCAL_MACHINE上,可缩写为 HKLM。
在附加的磁盘中,打开
\windows\system32\config\SOFTWARE
该文件。- 当系统提示输入名称时,请输入 BROKENSOFTWARE。
- 若要验证 是否已加载 BROKENSOFTWARE ,请展开 HKEY_LOCAL_MACHINE 并查找添加 的 BROKENSOFTWARE 密钥。
转到 BROKENSOFTWARE 并检查 Loaded hive 中是否存在 CleanupProfiles 密钥。
- 如果密钥存在,则 设置 CleanupProfiles 策略。 其值表示以天为单位的保留策略。
- 如果密钥不存在, 则未设置 CleanupProfiles 策略。 在这种情况下,请跳到提交 包含内存转储文件的支持票证。
使用以下命令删除 CleanupProfiles 密钥:
reg delete "HKLM\BROKENSOFTWARE\Policies\Microsoft\Windows\System" /v CleanupProfiles /f
使用以下命令卸载 BROKENSOFTWARE 配置单元:
reg unload HKLM\BROKENSOFTWARE
启用串行控制台和内存转储收集
建议:在重新生成 VM 之前,请运行以下脚本来启用串行控制台和内存转储收集:
以管理员身份打开权限提升的命令提示符会话。
列出 BCD 存储数据并确定将在下一步中使用的启动加载程序标识符。
对于第 1 代 VM,请输入以下命令并记下列出的标识符:
bcdedit /store <BOOT PARTITON>:\boot\bcd /enum
在命令中,替换为
<BOOT PARTITON>
附加磁盘中包含启动文件夹的分区的字母。
对于第 2 代 VM,请输入以下命令并记下列出的标识符:
bcdedit /store <LETTER OF THE EFI SYSTEM PARTITION>:EFI\Microsoft\boot\bcd /enum
- 在命令中,替换为
<LETTER OF THE EFI SYSTEM PARTITION>
EFI 系统分区的字母。 - 启动磁盘管理控制台以识别标记为 EFI 系统分区的相应系统分区可能很有帮助。
- 标识符可以是唯一的 GUID,也可以是默认 启动程序。
- 在命令中,替换为
运行以下命令:
启用串行控制台:
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
验 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
重新生成虚拟机
使用 VM 修复命令的步骤 5 重新生成 VM。
测试 VM 是否正常启动,以确定问题是否已修复。
- 如果问题尚未修复,请继续 收集转储文件并提交支持票证。
- 如果问题已修复,则无需执行进一步的步骤。
如果问题已修复,则策略现在在本地禁用。 对于永久性解决方案,请勿在 VM 上使用 CleanupProfiles 策略,因为它会自动删除用户配置文件。 使用不同的方法执行配置文件清理,例如计划的任务或脚本。
请勿使用此策略:Machine\Admin Templates\System\User Profiles\Delete user profiles,早于系统重启的指定天数。
现在应修复此问题
测试 VM,确保 VM 正常运行。 如果仍然遇到问题,可以继续下一部分以获取进一步的帮助。
收集内存转储文件并提交支持票证
若要解决此问题,首先需要收集崩溃的内存转储文件,然后与内存转储文件联系支持人员。 若要收集转储文件,请执行以下步骤:
将 OS 磁盘附加到新的修复 VM
- 使用 VM 修复命令的步骤 1-3 准备新的修复 VM。
- 使用远程桌面连接来连接到修复 VM。
找到转储文件并提交支持票证
- 在修复 VM 上,转到附加 OS 磁盘中的 Windows 文件夹。 如果分配给附加 OS 磁盘的驱动程序号标记为 F,则需要转到
F:\Windows
。 - 找到
memory.dmp
文件,然后连同内存转储文件一起提交支持票证。 - 如果在查找
memory.dmp
文件时遇到问题,请改用 串行控制台 中的不可屏蔽中断(NMI)调用。 按照本指南 ,在此处使用 NMI 调用生成故障转储文件。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。