由于各种原因,超出了超级用户的范围,我被要求暂时禁用我自己的一个系统。我拥有完全的管理员控制权,并且拥有这个系统。它运行的是 Windows 7 SP1。我想把这件事做好——一件可信、可否认、艺术性的事情。我看了看这些,但大多数是无法否认的。
理想情况下,我希望在预定的时间触发某些事件,看起来像是硬件错误 — BSOD、随机重启等,或者随机连接问题。我还想偷偷摸摸地在发生这种情况时不在系统旁(我有几个小时的时间来让它工作,但我宁愿不实际在系统旁)是当一切都崩溃时,系统会崩溃。我该怎么做?我想得到随机的错误,通常足以让人恼火,而不是让系统崩溃。我不需要它通过技术用户的审核,我只需要让它尽可能让人恼火地崩溃。
我该如何做呢?
答案1
这命令行界面为了磁盘加密器开源分区加密软件包括一个-bsod
参数,wiki 上说它会
删除内存中的所有键并产生 BSOD
(重点是我的)。
您可以使用Windows 任务计划程序在给定时间安排其执行,它应该会根据需要生成 BSOD。我没有测试过这个解决方案,因为我目前不在 Windows 上,但它据说可以在 32 位和 64 位版本的 Windows 2000、XP、Server 2003、Vista、Server 2008 和 7 中工作。
但不要就此止步:
您可以使用这个重启工具显示自定义的神秘消息,要求重新启动并在 X 秒后执行。将 X 设置为非常低的值。在任务计划程序中设置多个事件。或者,使用不会显示任何消息的重新启动工具,或者内置关机功能。
最后,还有不是我的错
Notmyfault 是一款可用于使 Windows 系统崩溃、挂起和导致内核内存泄漏的工具。它对于学习如何识别和诊断设备驱动程序和硬件问题非常有用,您还可以使用它在行为异常的系统上生成蓝屏转储文件。
答案2
我在宿舍聚会时经常使用 AutoHotKey 脚本来阻止醉酒的人摆弄我的电脑,同时保持电脑开着播放音乐。
a::return
;...
; repeat for other lowercase letters
z::return
A::return
; repeat for other uppercase letters
Z::return
1::return
;...
0::return
f1::return
;...
f12::return
LButton::return
RButton::return
MButton::return
#::return
#r::return
Delete::return
Enter::return
^!Delete::return
^+Esc::return
Space::return
LWin::return
!f4::return
Up::return
Down::return
Left::return
Right::return
;hold appskey and press z and 9 to unlock
;picked those three because they are far away from each other and unlikely to be pressed simultaneously even when buttonmashing
appskey & z::
If GetKeyState("9","P")
Suspend
ExitApp
return
将其设置为自动启动,计算机将不会对任何输入做出反应(所有按钮都被重新映射为无用,您所能做的就是移动鼠标)。修复此问题的唯一方法是禁用自动启动,以安全模式重新启动 Windows,或者了解秘密组合。
还有另一种方法:
f11::blockinput,on
f12::blockinput,off
但它可能需要管理员权限(因此可以简单地选择在重新启动后提示时不执行)而且它不会禁用Ctrl++ Alt。Del
答案3
怎么样蓝屏幕? 这个屏幕保护程序曾经在同事的电脑上运行过。崩溃是如此逼真,以至于我趁他不在的时候重置了他的电脑。我觉得我帮了他一个忙,让他不要等待启动过程 :-)
跑步不是我的错/crash 也应该会生成 BSOD。请确保将 Windows 配置为不重新启动,这样它才会真正显示蓝屏。
这段 C++ 代码以实时优先级运行 8 个线程,因此即使在现代 i7 处理器上也会导致 100% CPU 挂起。您只能按下重置按钮。
void WasteTime()
{
int priority = 15;
::SetThreadPriority(::GetCurrentThread(), priority);
while (true)
{
}
}
int _tmain(int argc, _TCHAR* argv[])
{
::SetPriorityClass(::GetCurrentProcess(), 0x100);
for(int i=0; i<7; i++)
{
LPDWORD threadid = 0;
::CreateThread(NULL, 64*1024, (LPTHREAD_START_ROUTINE)&WasteTime, NULL, 0, threadid);
}
WasteTime();
return 0;
}
答案4
只需几个批处理文件即可轻松实现连接;一个是 ipconfig /release,另一个是 ipconfig /renew,在 Windows 任务计划程序中安排预定时间。左下角的“创建任务”窗口上甚至还有一个复选框,用于隐藏任务!