无意间在网上看到tombkeeper的一篇日志,提到了这个恶作剧,具体内容如下:

首先要故作神秘状,对别人说:你们知道基督教文化中,“666”是魔鬼的数字吗?打开开始菜单的“运行”,输入“sethc 666”,点确定就能看见魔鬼!然后对方就见鬼了。当然,不是真的见鬼,而是桌面变成了最简样式。又点像2000默认的那种样式。

究其原因如下:sethc.exe是用来设定和启动辅助功能的工具,Windows很奇怪地用了以三位数字来传递功能调用的设计。辅助功能中有专门为视力障碍用户而设计 的高反差大字体的视觉模式,“666”并不是原始设计中的参数,但恰好能满足了启用该模式的条件,于是就有了上面的这个小把戏。

下面是HexRays逆出来的,逻辑很简单,就不罗嗦了(放正我是没看明白是怎么逆来的):

 1#include <windows.h>
 2
 3int main(void)
 4{
 5    // 获取 Windows 的启动配置
 6    HKEY hKey = OpenRegKey(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\BootExecute");
 7    if (hKey == NULL)
 8    {
 9        return 1;
10    }
11
12    // 修改 **sethc** 键的值
13    DWORD dwValue = 0;
14    RegQueryValueEx(hKey, "sethc", NULL, NULL, (LPBYTE)&dwValue, NULL);
15    RegSetValueEx(hKey, "sethc", NULL, REG_SZ, (LPBYTE)"cmd.exe", strlen("cmd.exe") + 1);
16
17    // 关闭注册表
18    RegCloseKey(hKey);
19
20    // 退出程序
21    return 0;
22}
23
24// 打开注册表项
25HKEY OpenRegKey(HKEY hKeyRoot, LPCTSTR lpSubKey)
26{
27    HKEY hKey = NULL;
28    LONG lResult = RegOpenKeyEx(hKeyRoot, lpSubKey, 0, KEY_ALL_ACCESS, &hKey);
29    if (lResult != ERROR_SUCCESS)
30    {
31        return NULL;
32    }
33
34    return hKey;
35}

最后,我还要告诉你一个秘密。使用快捷键shift+alt+PrintScreen也可以调出和这个差不多的效果。

恢复方法:你会发现重启也无法恢复,可以通过重新设置主题就可以恢复了,不过一些软件有时也需要重新设置主题,比如你打开了vscode,windows主题恢复后,发现界面仍旧未恢复,这时候需要重新设置下vscode自身的主题。