2026-08-11 17:52:01 admin 赛事直播

系统蓝屏的几种姿势,确定不了解下么?

使用自定义快捷键

也许有的小伙伴使用的笔记本电脑的键盘上没有 Scroll Lock 键,该怎么办呢?Windows 已经考虑到了这种情况,允许我们自定义蓝屏快捷键。具体设置可以参考 微软官方文档 —— Forcing a System Crash from the Keyboard 。保存下面的代码到 .reg 文件,双击导入注册表,重启生效。

Windows Registry Editor Version 5.00

;------------------------------------------------------------------------------

; enable BSOD by custom key, mutually exclusive with CrashOnCtrlScroll setting

; Dump1Keys: 20 stands for LEFT CTRL

; Dump2Key: HEXadecimal INDEX in keyToScanTbl[134]

; 01 stands for `/~ key (left of 1/! key)

; 3d stands for space key.

; 1f stands for A key. but after test, ctrl + a will not work.

; WARNING: not sure this works for all keyboards, try your luck :)

;------------------------------------------------------------------------------

; For PS/2 keyboards

; disable CrashOnCtrlScroll first

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]

"CrashOnCtrlScroll"=-

; setup custom key

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump]

"Dump1Keys"=dword:00000020

"Dump2Key"=dword:00000001

; For USB keyboards

; disable CrashOnCtrlScroll first

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters]

"CrashOnCtrlScroll"=-

; setup custom key

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump]

"Dump1Keys"=dword:00000020

"Dump2Key"=dword:00000001

; For Hyper-V keyboards (BCN:I never use this, reference above setting)

; disable CrashOnCtrlScroll first

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\Parameters]

"CrashOnCtrlScroll"=-

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hyperkbd\crashdump]

"Dump1Keys"=dword:00000020

"Dump2Key"=dword:00000001

重启后,按住左侧的 Ctrl 键,然后连续按两下 ` 键就可以使系统蓝屏了。注意:一定要连续按两下! 按一下是不行的。

想要正确设置自定义蓝屏快捷键,不是一件容易的事。需要了解以下几点:

使用自定义快捷键需要先关闭 CrashOnCtrlScroll 设置,上面的代码已经做好了。

因为不同类型的键盘对应的注册表位置不一样,怎么知道自己的机器上的键盘是哪种类型的?

我们可以打开设备管理器,查看当前机器上的键盘信息。

我们可以用如下方法打开 设备管理器:

win10 系统中,可以直接在搜索框(或者按一下 windows 键)输入 设备管理器 搜索打开。

win10 系统中,按 Windows + x 快捷键,在弹出的系统菜单里点击 设备管理器(M) 打开。

输入 devmgmt.msc 打开。

通过控制面版打开(不同系统中可能不一样)。

还有很多其它方法,不一一列举了。

Dump1Keys 的值可以是组合值,比如,0x70 表示同时按下左侧的 ALT + CTRL + SHIFT。每一项的意义请参考下表(摘自微软官方文档):

意义

0x01

Rightmost SHIFT key

0x02

Rightmost CTRL key

0x04

Rightmost ALT key

0x10

Leftmost SHIFT key

0x20

Leftmost CTRL key

0x40

Leftmost ALT key

Dump2Key 是按键的扫描码在数组 keyToScanTbl[134] 中的索引值,keyToScanTbl[134]的定义如下(摘自微软官方文档):

const UCHAR keyToScanTbl[134] = {

0x00,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,

0x0A,0x0B,0x0C,0x0D,0x7D,0x0E,0x0F,0x10,0x11,0x12,

0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x00,

0x3A,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,

0x27,0x28,0x2B,0x1C,0x2A,0x00,0x2C,0x2D,0x2E,0x2F,

0x30,0x31,0x32,0x33,0x34,0x35,0x73,0x36,0x1D,0x00,

0x38,0x39,0xB8,0x00,0x9D,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0xD2,0xD3,0x00,0x00,0xCB,

0xC7,0xCF,0x00,0xC8,0xD0,0xC9,0xD1,0x00,0x00,0xCD,

0x45,0x47,0x4B,0x4F,0x00,0xB5,0x48,0x4C,0x50,0x52,

0x37,0x49,0x4D,0x51,0x53,0x4A,0x4E,0x00,0x9C,0x00,

0x01,0x00,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,

0x43,0x44,0x57,0x58,0x00,0x46,0x00,0x00,0x00,0x00,

0x00,0x7B,0x79,0x70 };

上面的例子中,` 键的扫描码是 0x29,在keyToScanTbl[134]的索引是 1 。

关于扫描码,按下和抬起按键时会产生不同的扫描码,我们需要关注的是按下时对应的扫描码。同时,不同的键盘可能有不同的扫描码。下面给出 101/102键 键盘(PC/AT 和 PS/2) 的扫描码。

我们参考相关文档的时候需要注意 按下按键对应的术语是(Make),抬起按键对应的术语是(Break)。下面贴一张扫描码表的部分截图:

表格最后的说明非常重要:

高亮部分的意思是:操作系统的其它部分和所有的应用程序按 Scan Code Set 1 里的值处理扫描码。所以我猜测微软官方文档里的 keyToScanTbl[134] 的值是按照 Scan Code Set 1 给出的。实在没精力调查的更清楚了,如果哪位小伙伴儿熟悉相关内容,请务必指点!我特意录制了使用自定义快捷键 CTRL + ` + ` 触发蓝屏的过程。按一次 ` 是不行的,一定要按两次。