以编程方式触发BSOD

时间:2011-04-20 21:57:36

标签: c# .net bsod

纯粹出于学术原因。

是否可以以编程方式在C#/ .NET中的Windows xp / windows 7下发生BSOD。

我建议必须有一些肮脏的黑客,或者一些易受虐待的漏洞导致这种情况。

我正在寻找一段代码来运行,以确保在有限的时间内完成BSOD。

7 个答案:

答案 0 :(得分:27)

杀戮过程“csrss.exe”导致BSOD。

但您需要管理员权限才能执行此操作。我不确定是否有办法纯粹使用受限制的权限。

编辑:

是的,它运作正常。我给自己做了一个不错的小BSOD:)

System.Diagnostics.Process.GetProcessesByName("csrss")[0].Kill();

答案 1 :(得分:3)

使用Process.Start运行导致BSOD的 SysInternals NotMyFault 工具(它使用潜水员执行此操作,这是唯一的方法)。

杀死csrss.exe目前也可以正常工作,但这是一种未经证实的方式,可能会在未来的Windows版本中消失。 NotMyFault使用记录清晰的方式来执行此操作。

答案 2 :(得分:1)

我曾经在Windows 7下遇到“问题”,在调试过程中使用Ping :: Send方法导致BSOD。 所以Debugger :: Attach然后ping也可能对你有用。 :)

答案 3 :(得分:0)

创建一个ping。杀死该计划。即时bsod由.net 4中的microsoft的tcpip.sys提供。

您将获得一个已锁定页面的进程。 :)

答案 4 :(得分:0)

对于所有版本的Windows,您都可以杀死svchost.exe,您将看到带有Critical_Process_Died的BSoD

答案 5 :(得分:0)

您可以将过程设置为关键,然后将其终止

using System;
using System.Runtime.InteropServices;

然后:

[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
System.Diagnostics.Process.EnterDebugMode();
RtlSetProcessIsCritical(1, 0, 0);
System.Diagnostics.Process.GetCurrentProcess().Kill();

答案 6 :(得分:-7)

过度ping你的本地主机,它会使你的cpu超载导致bsod。