Узнайте, запущено ли сканирование диска Защитника Windows - PullRequest
2 голосов
/ 14 мая 2009

Сканирование диска Защитника Windows значительно повышает производительность системы. Есть ли способ для приложения C # узнать, выполняется ли сканирование диска в данный момент?

Ответы [ 2 ]

2 голосов
/ 09 июля 2015

Вы можете проверить загрузку процессора, которую в настоящее время создает MsMpEng.exe (исполняемый файл службы защиты от вредоносных программ). На моем компьютере он работает с 50% ЦП (одно ядро ​​ЦП полностью занято), наблюдая за установкой.

Он блокирует файл EXE или DLL, который мой установщик записывает на диск до 25 секунд! (Установщик зависает, очевидно.)

Обратите внимание, что MsMpEng.exe работает даже после полного отключения WindowsDefender на панели управления. Так что просто проверить, работает ли служба, недостаточно. Вы должны проверить текущую загрузку процессора.

Защитник Windows сканирует каждый файл EXE и DLL каждый раз заново при запуске приложения - ХОТЯ, хотя оно уже проверяло все эти файлы, когда приложение было установлено! Так что каждый раз, когда вы запускаете приложение, у вас огромная задержка: чем больше DLL-файлов загружает ваше приложение, тем медленнее.

Особенно, когда ваше приложение использует защиту от пиратства, такую ​​как Themida или WinLicense, Защитнику Windows требуется ЧРЕЗВЫЧАЙНО долго проверять эти файлы.

Защитник Windows проверяет каждый исполняемый файл (EXE, DLL), когда приложение открывает файл ТОЛЬКО без чтения или записи одного байта, что приводит к задержке CreateFile() на срок до 25 секунд!

Совершенно очевидно, что Microsoft не обладает знаниями для написания быстрого и эффективного программного обеспечения для защиты от вредоносных программ. (Я никогда не видел, чтобы антивирусное программное обеспечение запускало 25 секунд для сканирования одного файла!) Рекомендуется установить другую антивирусную программу, в результате чего Защитник Windows будет автоматически отключен.


Когда пользователь включает / выключает Защитника Windows, изменяются следующие ключи реестра:

Windows 8 Off:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WdBoot
"Group"= "_Early-Launch"
"Start"= 3   // SERVICE_DEMAND_START
"ImagePath"= "\SystemRoot\system32\drivers\WdBoot.sys"

Windows 8 Вкл .:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WdBoot
"Group"= "Early-Launch"
"Start"= 0   // SERVICE_BOOT_START
"ImagePath"= "system32\drivers\WdBoot.sys"

Обратите внимание, что служба WdBoot обычно не запускается при проверке его состояния, даже если она включена. Кажется, он работает только при загрузке Windows (?).


Windows 7, Windows 8 и Windows 10 Off:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection
"DisableRealtimeMonitoring"=1

Windows 7, Windows 8 и Windows 10 On:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection
"DisableRealtimeMonitoring"=0
// or the entry does not exist

Этот ключ не может быть изменен администратором. Разрешение на запись предоставляется только пользователю «SYSTEM» и группам «WinDefend» и «TrustedInstaller».

Начиная с Windows 10, больше невозможно записать это значение из службы, работающей с пользователем «Система / NT AUTHORITY» (-> Доступ запрещен). Вероятно, Microsoft проверяет цифровую подпись приложения, которое пытается записать это значение.

И что действительно отстой в Windows 10 - это то, что вы можете выключить Защитник Windows, перезагрузить компьютер, и он снова будет включен!


И еще один ключ, влияющий на Защитника Windows (по умолчанию он не существует, но может быть создан как обычный администратор):

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows Defender
"DisableAntiSpyware" = 1

Эффект этого ключа заключается в том, что вы нажимаете «Защитник Windows» на панели управления и получаете окно с сообщением: «Это приложение отключено групповой политикой ..... Чтобы разрешить запуск этого приложения, обратитесь к администратору безопасности включить программу через групповую политику. "

Обратите внимание, что эта клавиша НЕ отключает Защитник Windows. Запрещено открывать панель конфигурации Защитника Windows (MsAscUi.exe).

0 голосов
/ 14 мая 2009

Пример использования Internet Explorer:

Process[] ProcInfo = System.Diagnostics.Process.GetProcessesByName("iexplore");
...