Я бывший специалист по полевым работам для очень крупной телекоммуникационной компании, и часть моей работы заключалась в установке программного обеспечения Антивируса для клиентов во время сетевых установок. Проблема в том, что многие жилые системы уже заражены или увязли с программами запуска, что упростило задачу кошмаров. Сюда входит запуск msconfig и замена между вкладками.C# Современный способ генерации BSOD
Я написал утилиту, которая автоматически запускается с загрузочного диска USB, чтобы временно отключить все программы при запуске, а затем автоматически перезагрузите компьютер, но у меня есть 2 вопроса, которые необходимо решить, чтобы технические специалисты могли потратить время на более важную задачу. Одна из проблем заключается в том, что мой вызов для перезагрузки машины не позволяет определить, выполняется ли мой код, потому что некоторые системы могут занять несколько часов, чтобы обработать мой автоматический код выключения из-за ограниченных ресурсов памяти. Другая проблема заключается в том, что румяное программное обеспечение имеет фонового работника, чтобы определить, были ли они отключены при запуске и активизируется миллисекунды после того, как я отключил их.
У меня есть подлинная причина генерации BSOD для предотвращения этих проблем, но ни одна из устаревших процедур не работает на Win10.
KeBugCheck
генерирует:
DLLNotFoundError
... если я пытаюсь импортировать NTOSKRNL.EXE с экстерном вызова
Источник: programmatically trigger BSOD Windows 10 (Access Denied с более высоким уровнем Privs)
System.Diagnostics.Process.GetProcessesByName("csrss")[0].Kill();
Windows 10 (Это работает, но также вызывает отключение вызовов для румян программного обеспечения)
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");
}
}
}
Windows 10 (не удалились в середине 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 есть ограниченные ограничения, которые меня ограничивают. Я не хочу никаких юридических проблем.
Фактически, говоря, что если вы посмотрите дальше по ссылке, которую вы предоставили, [этот ответ] (http://stackoverflow.com/a/15180436/585968) выглядит так, как вы хотите. Он перезагружается полностью с уровня драйвера – MickyD
Wow MickyD, вы отлично справились с переформатированием моего сообщения. Я бы предпочел включить код сотрудничества, а затем что-нибудь стороннее, даже если код нужно скомпилировать как отдельный проект и извлечь из файла ресурсов для использования в приложении форм. –
Проблема с этим ответом заключается в том, что они отформатированы так, что похоже, что вы используете внутреннюю команду, но это имя проекта microsoft и продукта, который вы загружаете из них (сторонний). Это не инструмент, который поставляется в расфасованном состоянии система. –