如何让 Windows 挂起(冻结)?

hyp*_*ers 181 windows freeze

我需要在 Windows挂起/冻结的情况下测试设备行为(例如,冻结屏幕、没有 LED 闪烁、对输入没有反应,包括Ctrl+Alt+Del等)。为了在相当短的时间内进行足够的实验,我需要以编程方式或其他方式启动这些挂起。

我特别对Windows 10感兴趣,但对其他版本的任何工作方式表示赞赏。

我在这个主题上所做的每一次搜索都毫不奇怪地让我讨论如何消除这些情况,而不是激怒它们。所以这个问题可能看起来很奇怪。

反馈: 我已经尝试了答案和评论中提供的许多食谱。首先,我对带来 BSoD 的崩溃不感兴趣(这就是我描述冻结而不是崩溃的原因)。

我必须承认,Windows 10 64 位在许多方面表现出良好的抵抗力。它可以很好地处理几乎所有CPU 负载方法(包括fork-bomb、循环等)。引发即时错误的方法(大多数 NotMyFault 挂起方法)由操作系统通过重新启动或关闭来处理(这不是我所追求的)。最好的结果是通过NotMyFault内存泄漏方法实现的——真正的冻结,没有重启的机会。

最后,微软关于让 Windows 冻结的大量文档给我留下了深刻的印象。看起来他们比对面更了解这部分(战斗冻结);-)

due*_*nni 230

也许这会有所帮助: 从键盘强制系统崩溃

对于 USB 键盘,您必须在注册表中启用键盘引发的崩溃。在注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters 中,创建一个名为 CrashOnCtrlScroll 的值,并将其设置为等于 0x01 的 REG_DWORD 值。

您必须重新启动系统才能使这些设置生效。

完成此操作后,可以使用以下热键序列启动键盘崩溃:按住最右侧的 CTRL 键,然后按两次 SCROLL LOCK 键。

或者你可以启动一个叉子炸弹:看到这个问题

还有NotMyFault

Notmyfault 是一种工具,可用于在 Windows 系统上崩溃、挂起和导致内核内存泄漏。它对于学习如何识别和诊断设备驱动程序和硬件问题很有用,您还可以使用它在行为异常的系统上生成蓝屏转储文件。

  • Aaannnddd duenni 绝对不允许靠近我的电脑。曾经。 (51认同)
  • 试过 ForkBomb 和 NotMyFault。泄漏方法之一似乎可以满足我的要求。其他人没有用,因为它们会导致重新启动/关闭而不是冻结。非常感谢。 (9认同)
  • CtrlScroll 为您带来 BSOD。是冻结系统以进行调试还是只是重新启动它,取决于引导设置。 (6认同)

bar*_*cue 24

听起来您正在测试外部设备对操作系统无响应的反应。

如果您的硬件可以连接到虚拟化的 Windows 安装,那么您可以根据需要多次暂停和恢复虚拟机。在 VirtualBox(或其他桌面虚拟化)环境中安装所需的操作系统,将正在使用的任何硬件接口(USB、以太网或其他)暴露给 VM。

然后您可以随意暂停和恢复虚拟机。


小智 22

至少在较旧的 Windows 版本(几年前)下,以下内容有效:

我写了一个无限循环的 C 程序:

while(1) {}
Run Code Online (Sandbox Code Playgroud)

...然后我在任务管理器中给了该程序“实时优先级”(还有一个 API 可以做到这一点)。

在多核系统上,我需要多次执行此操作,因此每个核上都运行一个循环......

  • 这样做时要减少 CPU 的热量:将来自 `#include <immintrin.h>` 的 `_mm_pause()` 放入循环中。那是 CPU 硬件指令,而不是任何类型的“睡眠”系统调用;就操作系统而言,您的进程与 SuperPI 没有区别;区别只是在运​​行循环时 CPU 消耗了多少功率。 (39认同)
  • 我不确定这是否会阻止 Windows 的内核模式部分工作。 (5认同)
  • @meklarian:应该是`CLI; HLT`。不过,大概您必须从特权模式下执行此操作。原则上它仍然可以通过NMI或类似的方式进行救援。 (3认同)
  • @CodesInChaos:大多数内核线程以正常优先级运行。每个 CPU 和内核中的一个也差不多完成了。 (2认同)

Dyl*_*mee 10

最强的内核挂起(即没有鼠标跟踪等)是当代码在内核模式下进入无限循环而中断关闭时。

可以使用设备驱动程序实现这一点,更好的是,您可以编写驱动程序,使其在您的控制下启动和停止挂起(假设无限循环正在测试您控制的条件)。

如何编写和安装此驱动程序将是另一个或三个问题的主题,但这就是我要采取的方法。


Ral*_*alf 8

请在 StackOverflow 上查看与您类似的以下问题:How to make windows freeze for short period of time

tl; dr 是没有办法(可靠地)做到这一点。

与其冻结或让 Windows 挂起,不如中断与设备的通信。

我不知道你的设备是什么以及你如何连接它。如果它是 USB 或以太网适配器,例如,您可以轻松地在设备管理器中停用它或拔掉它?如果您强行使系统崩溃或挂起,您可能会以各种方式损坏系统,因此请谨慎操作。


Nic*_*ick 5

内核调试模式不是一种选择吗?

我已经在 Windows 7 中进行了设置,并且此答案中的链接说明指定了 XP 或更高版本,因此它应该适用于 Windows 10。

我已经通过 FireWire/1394 设置了它,因为在我看来它是最简单的。但您也可以通过网络USB(以及更多)进行操作。

基本上,

通过在提升的提示中运行这些命令来设置目标计算机(选择一个频道n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n
Run Code Online (Sandbox Code Playgroud)

这与转到 的引导选项卡msconfig并选择“高级”按钮相同:

在此处输入图片说明

在此处输入图片说明

然后(重新启动目标计算机后),使用与目标计算机的 WinDbg 相同的位数在主机上运行 WinDbg。

然后,只要您想从主机计算机暂停内核执行就可以了。如果您测试设备有一些正在运行的异步操作,这应该与其他方法一样有效。