代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

了解Windows Defender磁盘扫描是否正在运行

  •  2
  • TalkingCode  · 技术社区  · 15 年前

    Windows Defender磁盘扫描需要系统提供大量性能。 有没有办法让C应用程序知道磁盘扫描是否正在运行?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Peter Mortensen Sumit Kumar    6 年前

    你可以检查处理器的负载 MsMpEng.exe (反恶意软件服务可执行文件)当前正在生成。在我的电脑上,它运行时有50%的CPU(一个CPU核心完全占用),同时观察安装情况。

    它会阻止我的安装程序写入磁盘的exe或dll文件长达25秒!(显然,安装程序是挂着的。)

    请注意 msmpeng.exe 在控制面板中完全关闭WindowsDefender后仍在运行。所以仅仅检查服务是否正在运行是不够的。您必须检查它的当前CPU负载。

    Windows Defender每次扫描每个exe和dll文件 新的 当你启动一个应用程序-虽然它已经扫描了所有这些文件时,应用程序已经安装!所以 每次 启动一个应用程序会有很大的延迟:应用程序加载的dll文件越多,速度就越慢。

    特别是当您的应用程序使用诸如Themida或WinLicense之类的反盗版保护时,Windows Defender需要非常长的时间来检查这些文件。

    当应用程序只打开文件而不读取或写入其中的一个字节时,Windows Defender会扫描每个可执行文件(exe、dll),这会导致延迟 CreateFile() 最多25秒!

    很明显,微软不具备编写快速高效的反恶意软件的知识。(我从未见过任何杀毒软件运行25秒扫描一个文件!)建议安装另一个防病毒程序,这将导致自动禁用Windows Defender。


    当用户打开/关闭Windows Defender时,以下注册表项将更改:

    Windows 8关闭:

    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关闭:

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

    Windows 7、Windows 8和Windows 10在:

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

    管理员用户无法更改此密钥。写入权限仅授予用户“system”和组“windefend”和“trustedinstaller”。

    由于Windows 10,无法再从使用“系统/NT授权”用户运行的服务中写入此值(>拒绝访问)。可能Microsoft会检查试图写入此值的应用程序的数字签名。

    什么是真正的 烂透了 在Windows 10上,您可以关闭Windows Defender,重新启动计算机,它将再次启用!


    还有另一个影响Windows Defender的密钥(默认情况下它不存在,但可以作为普通管理员创建):

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

    此键的作用是,单击“控制面板”中的“Windows Defender”,会出现一个消息框,告诉您:“此应用程序已由组策略关闭…..要允许此应用程序运行,请与安全管理员联系,以通过组策略启用该程序。”

    注意,这把钥匙 不关闭 Windows Defender。它只禁止用户打开Windows Defender配置面板(msasci.exe)。

        2
  •  -1
  •   Peter Mortensen Sumit Kumar    6 年前

    使用Internet Explorer的示例:

    Process[] ProcInfo = System.Diagnostics.Process.GetProcessesByName("iexplore");
    
    推荐文章