【发布时间】:2017-01-21 06:40:43
【问题描述】:
我曾是一家大型电信公司的现场技术人员,我的部分工作是在网络安装期间为客户安装防病毒软件。问题是许多住宅系统已经被感染或陷入启动程序,使最简单的任务变成噩梦。这包括运行 msconfig 和在选项卡之间交换。
我编写了一个实用程序,它会自动从 USB 启动驱动器运行,以暂时禁用启动时的所有程序,然后自动重新启动机器,但我有 2 个问题需要解决,以便技术人员可以将时间花在更重要的任务上。一个问题是我重新启动机器的调用使得无法确定我的代码是否已完成执行,因为由于内存资源有限,某些系统可能需要数小时来处理我的自动关闭代码。另一个问题是 rouge 软件有一个后台工作程序来检测它们是否在启动时被禁用并在我禁用它们后重新激活它们自己。
我确实有理由生成 BSOD 来防止这些问题,但没有一个旧程序在 Win10 上运行。
KeBugCheck 生成一个:
DLLNotFoundError
...如果我尝试通过外部调用导入 NtosKrnl.exe
来源:programmatically trigger BSOD Windows10(使用提升的 Privs 拒绝访问)
System.Diagnostics.Process.GetProcessesByName("csrss")[0].Kill();
Windows10(这有效,但也会触发 rouge 软件的关闭调用)
public static void ShutDown(bool Forced)
{
Process[] processess = Process.GetProcesses();//Get all the process in your system
foreach (var process in processess)
{
try
{
Console.WriteLine(process.ProcessName);
process.PriorityClass = ProcessPriorityClass.BelowNormal; //sets all the process to below normal priority
process.Kill();
}
catch (Exception E)
{
Console.WriteLine(E.Message + " :: [ " + process.ProcessName + " ] Could not be killed");
}
}
}
Windows10(Ping中途退出无效)
public static void ShutDown(bool Forced)
{
Ping Tcp = new Ping();
Byte[] buffer = new Byte[0];
Tcp.Send("www.microsoft.com", 12000, buffer);
Environment.Exit(1);
}
最好包含一个第三方实用程序,我可以从资源文件中提取并执行以模拟像 NotMyFault 这样的崩溃,但他们的 EULA 有一些严格的限制,限制了我。我不想遇到任何法律纠纷。
【问题讨论】:
-
实际上,如果您进一步查看您提供的链接,this answer 看起来就是您想要的。它从驱动程序级别干净地重新启动
-
哇 MickyD,你在重新格式化我的帖子时做得很好。我宁愿包含协作代码而不是任何第三方代码,即使代码需要编译为单独的项目并从资源文件中提取以在表单应用程序中使用。
-
该答案的问题是他们对其进行了格式化,因此看起来您使用的是内部命令,但这是微软项目的名称以及您从他们那里下载的产品(第三方)这不是预装在操作系统上的工具。
-
“你在重新格式化我的帖子时做得很好” - 没问题的好先生 :)
-
“它不是一个预装在操作系统上的工具”——没错。但是没有理由不能在包含 “将从 USB 启动驱动器自动运行的实用程序” 的 USB 驱动器上插入它。另一种方法是制作自己的驱动程序
标签: c# windows-10 bsod