2017-01-21 6 views
0

Я бывший специалист по полевым работам для очень крупной телекоммуникационной компании, и часть моей работы заключалась в установке программного обеспечения Антивируса для клиентов во время сетевых установок. Проблема в том, что многие жилые системы уже заражены или увязли с программами запуска, что упростило задачу кошмаров. Сюда входит запуск 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 есть ограниченные ограничения, которые меня ограничивают. Я не хочу никаких юридических проблем.

+0

Фактически, говоря, что если вы посмотрите дальше по ссылке, которую вы предоставили, [этот ответ] (http://stackoverflow.com/a/15180436/585968) выглядит так, как вы хотите. Он перезагружается полностью с уровня драйвера – MickyD

+0

Wow MickyD, вы отлично справились с переформатированием моего сообщения. Я бы предпочел включить код сотрудничества, а затем что-нибудь стороннее, даже если код нужно скомпилировать как отдельный проект и извлечь из файла ресурсов для использования в приложении форм. –

+0

Проблема с этим ответом заключается в том, что они отформатированы так, что похоже, что вы используете внутреннюю команду, но это имя проекта microsoft и продукта, который вы загружаете из них (сторонний). Это не инструмент, который поставляется в расфасованном состоянии система. –

ответ

1

Это резюме моих комментариев выше


OP:

Источник: программно вызвать BSOD Windows 10 (Access Denied с надземной Privs)

Me

«Это не инструмент, который поставляется в расфасованной операционной системе» - это правильно. Но нет никакой причины, по которой вы не можете наложить это на свой USB-накопитель, содержащий вашу «утилиту, которая будет автоматически запускаться с USB-накопителя».В качестве альтернативы можно сделать свой собственный

OP:

Я думаю, что вы попали в яблочко с альтернативным ответом на последний OP:

В то время как ссылка, которую вы включенный System.Diagnostics.Process.GetProcessesByName("csrss")[0].Kill(); не работает в Windows 10, как вы указали, another answer на той же странице говорит о том, что инструмент NotMyFault от SysInternal может быть лучшим выбором, поскольку он вызывает BSOD на «для этого используется дайвер который является единственным способом ".

Я думаю, вы можете комбинировать USB-накопитель, который вы используете вместе с инструментом Sys Internals NotMyFault, который вы можете найти here. Не Модифицируйте свой существующий дизайн, чтобы при вставке USB и автоматического запуска других инструментов установите драйвер/инструмент, пока вы на нем.

Альтернативой является создание собственного низкоуровневого драйвера Windows, который вызывает намерение BSOD.

 Смежные вопросы

  • Нет связанных вопросов^_^