Вимкнути Захисник Windows у Windows 10


32

Я не можу знайти будь-якої інформації про те, як відключити Windows Defender в Windows 10. Є деяка інформація про те, як це зробити в попередньому перегляді, але сторінки конфігурації змінилися з остаточним випуском.

Зокрема, я хочу зупинити та відключити службу Windows Defender.

  • Використання net stop windefendз підвищеного командного рядка дає "доступ заборонений"
  • Тип зупинки та запуску замурований у sevices.msc, навіть коли ви ввійшли як адміністратор
  • Здається, не існує способу GUI відключити UAC в Windows 10

Хтось придумав, як відключити Defender в Windows 10?


3
Найпростіший метод. Просто встановіть платний / безкоштовний пакет безпеки, і він автоматично відключить себе. Поза цим просто перейдіть до "Оновлення та безпека" та вимкніть захист у режимі реального часу. Ви не можете відключити UAC в Windows 8 і вище в тій же мірі, що і в Windows 7. Звичайно, я не впевнений, що стосується UAC у Windows Defender.
Рамхаунд

Я згадав про UAC, тому що здавалося можливим, що UAC заважає мені відключити Defender. Я ще не розгорнув останню версію Kaspersky, яка підтримує Windows 10, і, чесно кажучи, я не настільки впевнений, що Касперський буде добре встановлюватися при запуску Defender. Плюс я хочу відключити це принципово у випадку, якщо це потрібно чи я хочу з інших причин.
Тодд Вілкокс

Я відкрив, Update & Securityі я можу відключити Windows Defender. Особисто мені вдалося відключити послугу, хоча після цього я це зробив.
Рамхаунд

Windows Defender розроблений так, щоб його можна було легко замінити, просто встановіть інший AV і він повинен автоматично вимикатися.
gronostaj

3
@gronostaj Якби у мене було питання про те, як замінити Windows Defender на інше рішення A / V, я б запропонував вам опублікувати ваш коментар як відповідь, і я прийняв би його, за винятком того, що ваш коментар такий же, як і Ramhound, тому я б дійсно запропонував він це робить. Але це не те, що я намагаюся зробити.
Todd Wilcox

Відповіді:


22

Ви можете це зробити за допомогою групової політики .

відчинено gpedit.msc

перейти до Computer Configuration > Administrative Templates > Windows Components > Windows Defender

Turn off Windows Defender = Увімкнено

Якщо ви спробуєте відкрити Windows Defender, ви побачите це: введіть тут опис зображення

І навіть незважаючи на те, що в Налаштуваннях це може бути ввімкнено, Сервіс не працює:введіть тут опис зображення

більше інформації:

http://aaron-hoffman.blogspot.com/2015/08/install-and-setup-windows-10-for.html

та http://www.download3k.com/articles/How-to-Turn-Off-Windows-Defender-Permanently-in-Windows-10-01350


Я не можу повірити, що не знайшов цього самостійно. Спасибі!
Тодд Уілкокс

2
Це також для Windows Home? Я не можу знайтиgpedit.msc
Stijn de Witt

2
Ні, це не працює для домашніх користувачів. Pro / Enterprise / Education only
sloosecannon

2
Спробував це ... однак служба все ще працює в диспетчері завдань.
Бриг

12

Я знайшов інший спосіб за допомогою реєстру.

Користуючись цією статтею , я змінив тип запуску для служб Defender та драйверів (!!) у реєстрі під час входу в систему як адміністратор. Ось короткий опис:

  1. Перегляньте реєстр на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  2. Шукайте сервіси, починаючи з "wd", які мають "Windows Defender" у значенні Опис. Можливо неповний список: wdboot, wdfilter, wdnisdrv, wdnissvc, windefend.
  3. Змініть Startзначення для кожної послуги на 0x4(шістнадцяткове 4, десяткове 4).
  4. Перезавантажте.

4
Я ввійшов як адміністратор, і я все ще отримую помилку "Помилка написання. Помилка написання нового вмісту значення."
Марк

1
Я теж із тією ж помилкою "Error writing start. Error writing the value's new contents. Будь-яка робота навколо нас @Todd Wilcox?
Нам Г ВУ

1
Ви спробували клацнути правою кнопкою миші на regedit та запуститись як адміністратор?
Тодд Вількокс

2
на жаль, на Win10 Home Single Language, я отримую ту ж помилку, навіть якщо я почав regedit як адміністратор, будь-який інший спосіб вирішення. Я справді починаю зневажати Windows 10 зараз.
Гедеон

Якщо ви отримаєте Error writing (...), закрийте regedit і знову відкрийте.
Марк.2377

11

Коротка версія

  1. Завантажити
  2. Витяг
  3. Подвійне клацання DisableDefender.reg

Пояснення

На сьогоднішній день найбільш ефективним і чистим способом остаточно відключити Windows Defender в Windows 10 є групова політика, як описав Аарон Гофман. На жаль, у Windows 10 Home бракує необхідних інструментів.

Ось файл реєстру, який містить зміни, внесені gpedit.msc на машині Windows 10 Pro. Тестовано також на Windows 10 Home. Збережіть файл як DisableDefender.regіз закінченнями рядків у стилі Windows та двічі клацніть його, щоб імпортувати його у свій реєстр.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
"DisableRoutinelyTakingAction"=dword:00000001

Якщо ви коли - небудь захочете повторно включити Захисник, зміни 00000001в 00000000обох лініях.

Ви можете завантажити файли, щоб відключити та знову включити захисника з Gist .


1
Ви виграєте Інтернет сьогодні, сер.
ivan_bilan

Я знову ввімкнув WD шляхом regedit значення 00000000, результати захисту WD у режимі реального часу вимкнено, оскільки ви використовуєте інший AV. Насправді у мене не встановлено жодного антивірусу. Як це виправити? Спасибі
Сантоза Сенді

@SantosaSandy Це може статися з кількох причин, включаючи зловмисне програмне забезпечення. Слід почати окреме запитання.
Zenexer

Дякую, пан ПБ. У надзвичайних ситуаціях та відсутності підказки, що розслідує помилки, я просто оновлюю Windows та запускаю очищувач реєстру (наприклад, CCleaner). Захисник Windows знову активний. Дякую
Сантоса Сенді

4

Щоб повністю відключити Windows Defender (не лише захист у режимі реального часу), ви можете:

  1. Встановіть інший пакет безпеки (як згадував Ramhound).
  2. Якщо ви бажаєте скористатися стороннім додатком, ви можете використовувати NoDefender: http://msft.gq/pub/apps/NoDefender.zip

Більше інформації про NoDefender можна знайти тут: http://winaero.com/blog/nodefender-disable-windows-defender-in-windows-10-with-few-clicks/


Я підозрюю, що NoDefender може бути просто автоматизованим способом редагування реєстру, що я робив вручну.
Тодд Вілкокс

@ToddWilcox, Ваш метод кращий, ніж мій! Одна менш стороння програма, яку потрібно турбувати.
user5071535

1
Я все ще бачу антивірусну службу, яка працює з захисником Windows. У мене встановлено середнє безкоштовне видання
shorif2000

2
Точно, @Sharif Я хотів би побачити будь-які підтвердження того, що сервіс антивірусної програми також вимкнено.
Марк

2

Я написав пакетний файл і файли реєстру, які повинні повністю відключити Windows Defender в Windows 10.

  1. Збережіть такі файли в одній папці.
  2. Запустити Disable Windows Defender.batяк адміністратор.
  3. Після завершення пакетного файлу перезапустіть.
  4. Запустити Disable Windows Defender.batзнову як адміністратор.
  5. Windows Defender зараз має бути повністю відключений.

Disable Windows Defender.bat

@echo off

call :main %*
goto :eof

:main
    setlocal EnableDelayedExpansion

    rem Check if Windows Defender is running.
    tasklist /fi "imageName eq "MsMpEng.exe"" | find /i "MsMpEng.exe" > nul 2> nul
    if %errorLevel% equ 0 (
        rem Windows Defender is running.
        echo Windows Defender is running.

        rem Performable operations while Windows Defender is running.
        rem Disable Windows Defender drivers.
        echo Disabling Windows Defender drivers...
        set "drivers="%SystemRoot%\System32\drivers\WdBoot.sys";"%SystemRoot%\System32\drivers\WdFilter.sys";"%SystemRoot%\System32\drivers\WdNisDrv.sys""
        set "drivers=!drivers:""="!"

        set "wasDriverDisabled=false"
        for %%d in (!drivers!) do (
            if exist "%%~d" (
                echo Disabling Windows Defender driver "%%~d"...
                call :disableFile "%%~d"
                set "wasDriverDisabled=true"
            )
        )

        rem Disable Windows Defender objects.
        echo Disabling Windows Defender objects...
        call :importRegistry "Disable Windows Defender objects.reg"

        rem Require restart to unload Windows Defender drivers and objects.
        echo.
        echo Restart required.
    ) else (
        rem Windows Defender is not running.
        echo Windows Defender is not running.

        rem Performable operations while Windows Defender is not running.
        rem Disable Windows Defender features.
        echo Disabling Windows Defender features...
        call :importRegistry "Disable Windows Defender features.reg"
        rem Disable Windows Defender services.
        echo Disabling Windows Defender services...
        call :importRegistry "Disable Windows Defender services.reg"

        rem Disable Windows Defender files.
        echo Disabling Windows Defender files...
        ren "%ProgramFiles%\Windows Defender" "Windows Defender.bak"
        ren "%ProgramFiles(x86)%\Windows Defender" "Windows Defender.bak"
        ren "%ProgramData%\Microsoft\Windows Defender" "Windows Defender.bak"
    )

    endlocal
    goto :eof

:ownFile
    setlocal
    set "filePath=%~1"
    set "user=%~2"
    takeown /f "%filePath%" /a
    icacls "%filePath%" /grant "%user%:F"
    endlocal
    goto :eof

:disableFile
    setlocal
    set "filePath=%~1"
    call :ownFile "%filePath%" "Administrators"
    ren "%filePath%" "%~nx1.bak"
    endlocal
    goto :eof

:importRegistry
    setlocal
    set "filePath=%~1"
    call OwnRegistryKeys.bat "%filePath%"
    @echo off
    regedit /s "%filePath%"
    endlocal
    goto :eof

Disable Windows Defender objects.reg

Windows Registry Editor Version 5.00

; Disable "Scan with Windows Defender..." right click context menu.
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780}]
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{D8559EB9-20C0-410E-BEDA-7ED416AECC2A}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{D8559EB9-20C0-410E-BEDA-7ED416AECC2A}]

; Disable PSFactoryBuffer ("mpuxhostproxy.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{13F6A0B6-57AF-4BA7-ACAA-614BC89CA9D8}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{13F6A0B6-57AF-4BA7-ACAA-614BC89CA9D8}]

; Disable "DefenderCSP.dll".
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{195B4D07-3DE2-4744-BBF2-D90121AE785B}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{195B4D07-3DE2-4744-BBF2-D90121AE785B}]

; Disable Windows Defender IOfficeAntiVirus implementation ("MpOav.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{2781761E-28E0-4109-99FE-B9D127C57AFE}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{2781761E-28E0-4109-99FE-B9D127C57AFE}]

; Disable InfectionState WMI Provider ("MpProvider.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{361290c0-cb1b-49ae-9f3e-ba1cbe5dab35}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{361290c0-cb1b-49ae-9f3e-ba1cbe5dab35}]

; Disable Status WMI Provider ("MpProvider.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{8a696d12-576b-422e-9712-01b9dd84b446}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{8a696d12-576b-422e-9712-01b9dd84b446}]

; Disable PSFactoryBuffer ("mpuxhostproxy.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{94F35585-C5D7-4D95-BA71-A745AE76E2E2}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{94F35585-C5D7-4D95-BA71-A745AE76E2E2}]

; Disable Microsoft Windows Defender ("MsMpCom.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{A2D75874-6750-4931-94C1-C99D3BC9D0C7}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{A2D75874-6750-4931-94C1-C99D3BC9D0C7}]
[-HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{8C389764-F036-48F2-9AE2-88C260DCF43B}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\TypeLib\{8C389764-F036-48F2-9AE2-88C260DCF43B}]

; Disable Windows Defender WMI Provider ("ProtectionManagement.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{A7C452EF-8E9F-42EB-9F2B-245613CA0DC9}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{A7C452EF-8E9F-42EB-9F2B-245613CA0DC9}]

; Disable AMMonitoring WMI Provider ("AMMonitoringProvider.dll").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{DACA056E-216A-4FD1-84A6-C306A017ECEC}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{DACA056E-216A-4FD1-84A6-C306A017ECEC}]

; Disable MP UX Host ("MpUxSrv.exe").
[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FDA74D11-C4A6-4577-9F73-D7CA8586E10D}]
[-HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID\{FDA74D11-C4A6-4577-9F73-D7CA8586E10D}]

Disable Windows Defender features.reg

Windows Registry Editor Version 5.00

; Disable Windows Defender features.
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
"DisableRoutinelyTakingAction"=dword:00000001
"ProductStatus"=dword:00000000

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Defender\Real-Time Protection]
"DisableAntiSpywareRealtimeProtection"=dword:00000001
"DisableRealtimeMonitoring"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Defender\Scan]
"AutomaticallyCleanAfterScan"=dword:00000000
"ScheduleDay"=dword:00000008

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Defender\UX Configuration]
"AllowNonAdminFunctionality"=dword:00000000
"DisablePrivacyMode"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows Defender]
"DisableAntiSpyware"=dword:00000001
"DisableRoutinelyTakingAction"=dword:00000001
"ProductStatus"=dword:00000000

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows Defender\Real-Time Protection]
"DisableAntiSpywareRealtimeProtection"=dword:00000001
"DisableRealtimeMonitoring"=dword:00000001

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows Defender\Scan]
"AutomaticallyCleanAfterScan"=dword:00000000
"ScheduleDay"=dword:00000008

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows Defender\UX Configuration]
"AllowNonAdminFunctionality"=dword:00000000
"DisablePrivacyMode"=dword:00000001

Disable Windows Defender services.reg

Windows Registry Editor Version 5.00

; Disable "Windows Defender" services.
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\WinDefend]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\WinDefend]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinDefend]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\WdBoot]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\WdBoot]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WdBoot]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\WdFilter]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\WdFilter]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WdFilter]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\WdNisDrv]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\WdNisDrv]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WdNisDrv]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet001\Services\WdNisSvc]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\ControlSet002\Services\WdNisSvc]
"Start"=dword:00000004
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WdNisSvc]
"Start"=dword:00000004

OwnRegistryKeys.bat

@echo off

rem Get the location of the PowerShell file.
for /f "usebackq tokens=*" %%f in (`where "OwnRegistryKeys.ps1"`) do (
    rem Run command for each argument.
    for %%a in (%*) do (
        powershell -executionPolicy bypass -file "%%~f" "%%~a"
    )
)

OwnRegistryKeys.ps1

$script:baseKey = @{
    "HKEY_CLASSES_ROOT" = @{
        "name" = "HKEY_CLASSES_ROOT";
        "shortName" = "HKCR";
        "key" = [Microsoft.Win32.Registry]::ClassesRoot
    };
    "HKEY_CURRENT_CONFIG" = @{
        "name" = "HKEY_CURRENT_CONFIG";
        "shortName" = "HKCC";
        "key" = [Microsoft.Win32.Registry]::CurrentConfig
    };
    "HKEY_CURRENT_USER" = @{
        "name" = "HKEY_CURRENT_USER";
        "shortName" = "HKCU";
        "key" = [Microsoft.Win32.Registry]::CurrentUser
    };
    "HKEY_DYN_DATA" = @{
        "name" = "HKEY_DYN_DATA";
        "shortName" = "HKDD";
        "key" = [Microsoft.Win32.Registry]::DynData
    };
    "HKEY_LOCAL_MACHINE" = @{
        "name" = "HKEY_LOCAL_MACHINE";
        "shortName" = "HKLM";
        "key" = [Microsoft.Win32.Registry]::LocalMachine
    };
    "HKEY_PERFORMANCE_DATA" = @{
        "name" = "HKEY_PERFORMANCE_DATA";
        "shortName" = "HKPD";
        "key" = [Microsoft.Win32.Registry]::PerformanceData
    };
    "HKEY_USERS" = @{
        "name" = "HKEY_USERS";
        "shortName" = "HKU";
        "key" = [Microsoft.Win32.Registry]::Users
    }
}

function enablePrivilege {
    param(
        # The privilege to adjust. This set is taken from:
        # http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx
        [validateSet(
            "SeAssignPrimaryTokenPrivilege",
            "SeAuditPrivilege",
            "SeBackupPrivilege",
            "SeChangeNotifyPrivilege",
            "SeCreateGlobalPrivilege",
            "SeCreatePagefilePrivilege",
            "SeCreatePermanentPrivilege",
            "SeCreateSymbolicLinkPrivilege",
            "SeCreateTokenPrivilege",
            "SeDebugPrivilege",
            "SeEnableDelegationPrivilege",
            "SeImpersonatePrivilege",
            "SeIncreaseBasePriorityPrivilege",
            "SeIncreaseQuotaPrivilege",
            "SeIncreaseWorkingSetPrivilege",
            "SeLoadDriverPrivilege",
            "SeLockMemoryPrivilege",
            "SeMachineAccountPrivilege",
            "SeManageVolumePrivilege",
            "SeProfileSingleProcessPrivilege",
            "SeRelabelPrivilege",
            "SeRemoteShutdownPrivilege",
            "SeRestorePrivilege",
            "SeSecurityPrivilege",
            "SeShutdownPrivilege",
            "SeSyncAgentPrivilege",
            "SeSystemEnvironmentPrivilege",
            "SeSystemProfilePrivilege",
            "SeSystemtimePrivilege",
            "SeTakeOwnershipPrivilege",
            "SeTcbPrivilege",
            "SeTimeZonePrivilege",
            "SeTrustedCredManAccessPrivilege",
            "SeUndockPrivilege",
            "SeUnsolicitedInputPrivilege"
        )]
        $privilege,

        # The process on which to adjust the privilege. Defaults to the current process.
        $processId = $pid,

        # Switch to disable the privilege, rather than enable it.
        [switch] $disable
    )

    # Taken from P/Invoke.NET with minor adjustments.
    $definition = @'
using System;
using System.Runtime.InteropServices;

public class AdjustPrivilege {
    [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

    [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);

    [DllImport("advapi32.dll", SetLastError = true)]
    internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);

    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    internal struct TokPriv1Luid {
        public int Count;
        public long Luid;
        public int Attr;
    }

    internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
    internal const int SE_PRIVILEGE_DISABLED = 0x00000000;
    internal const int TOKEN_QUERY = 0x00000008;
    internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;

    public static bool EnablePrivilege(long processHandle, string privilege, bool disable) {
        bool result;
        TokPriv1Luid tp;
        IntPtr hproc = new IntPtr(processHandle);
        IntPtr htok = IntPtr.Zero;
        result = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
        tp.Count = 1;
        tp.Luid = 0;
        if (disable) {
            tp.Attr = SE_PRIVILEGE_DISABLED;
        } else {
            tp.Attr = SE_PRIVILEGE_ENABLED;
        }
        result = LookupPrivilegeValue(null, privilege, ref tp.Luid);
        result = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
        return result;
    }
}
'@

    $processHandle = (get-process -id $processId).handle
    $type = add-type $definition -passThru
    $type[0]::EnablePrivilege($processHandle, $privilege, $disable)
}

function getKeyNames {
    param(
        [parameter(mandatory = $true)]
        [string[]] $filePaths = $null
    )

    return (get-content $filePaths | select-string -pattern "\[\-?(.*)\]" -allMatches | forEach-object {$_.matches.groups[1].value} | get-unique)
}

function splitKeyName {
    param(
        [parameter(mandatory = $true)]
        [string] $keyName = $null
    )

    $names = $keyName.split("\\/", 2)

    $rootKeyName = $names[0]
    $subKeyName = $names[1]

    $keyPart = @{
        root = $baseKey[$rootKeyName];
        subKey = @{
            name = $subKeyName
        }
    }

    return $keyPart
}

function ownRegistryKey {
    param(
        [parameter(mandatory = $true)]
        [string] $keyName = $null
    )

    write-host """$keyName"""

    # Check if the key exists.
    if ($(try { test-path -path "Registry::$keyName".trim() } catch { $false })) {
        write-host "    Opening..."

        $keyPart = splitKeyName -keyName $keyName
        $ownableKey = $keyPart.root.key.openSubKey($keyPart.subKey.name, [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree, [System.Security.AccessControl.RegistryRights]::TakeOwnership)
        if ($ownableKey -ne $null) {
            # Set the owner.
            write-host "    Setting owner..."
            $acl = $ownableKey.getAccessControl([System.Security.AccessControl.AccessControlSections]::None)
            $owner = [System.Security.Principal.NTAccount] "Administrators"
            $acl.setOwner($owner)
            $ownableKey.setAccessControl($acl)

            # Set the permissions.
            write-host "    Setting permissions..."
            $acl = $ownableKey.getAccessControl()
            $person = [System.Security.Principal.NTAccount] "Administrators"
            $access = [System.Security.AccessControl.RegistryRights] "FullControl"
            $inheritance = [System.Security.AccessControl.InheritanceFlags] "ContainerInherit"
            $propagation = [System.Security.AccessControl.PropagationFlags] "None"
            $type = [System.Security.AccessControl.AccessControlType] "Allow"

            $rule = new-object System.Security.AccessControl.RegistryAccessRule($person, $access, $inheritance, $propagation, $type)
            $acl.setAccessRule($rule)
            $ownableKey.setAccessControl($acl)

            $ownableKey.close()

            write-host "    Done."

            # Own children subkeys.
            $readableKey = $keyPart.root.key.openSubKey($keyPart.subKey.name, [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadSubTree, [System.Security.AccessControl.RegistryRights]::ReadKey)
            if ($readableKey -ne $null) {
                $subKeyNames = ($readableKey.getSubKeyNames() | forEach-object { "$keyName\$_" })
                $readableKey.close()
                if ($subKeyNames -ne $null) {
                    ownRegistryKeys -keyNames $subKeyNames
                }
            } else {
                write-host "    Unable to open children subkeys."
            }
        } else {
            write-host "    Unable to open subkey."
        }
    } else {
        write-host "    Key does not exist."
    }

    write-host
}

function ownRegistryKeys {
    param(
        [parameter(mandatory = $true)]
        [string[]] $keyNames = $null
    )

    $keyName = $null
    foreach ($keyName in $keyNames) {
        # Own parent key and children subkeys.
        ownRegistryKey -keyName $keyName
    }
}

function requestPrivileges {
    $numberOfRetries = 10

    $privilegeResult = $false
    for ($r = 0; !$privilegeResult -band $r -lt $numberOfRetries; $r += 1) {
        $privilegeResult = enablePrivilege -privilege "SeTakeOwnershipPrivilege"
    }

    if (!$privilegeResult) {
        write-host "Unable to receive privilege."
        exit 1
    }
}

function main {
    param(
        [parameter(mandatory = $true)]
        [string[]] $filePaths = $null
    )

    requestPrivileges

    $keyNames = getKeyNames -filePaths $filePaths
    ownRegistryKeys -keyNames $keyNames
}

main $args

Спасибі! BTW: Це вимагає англійську версію вікон на коректну роботу
М. Абдельхафіда

2

Було б корисно зрозуміти, чому ви не можете зупинити певну послугу.

  • Я адміністратор; гірше відмови не може адміністратор адміністративувати ?!

Це через дозволи на безпеку сервісу WinDefend .

Примітка : WinDefendфактична назва "Антивірусної служби Windows Defender"

введіть тут опис зображення

Перегляд дозволів

Якщо ви запускаєте з командного рядка:

>sc sdshow WinDefend

де

  • sdshowозначає "Відображає дескриптор безпеки служби."

Ви отримаєте дескриптор безпеки :

C:\Users\Ian>sc sdshow WinDefend

D:(A;;CCLCSWRPLOCRRC;;;BU)(A;;CCLCSWRPLOCRRC;;;SY)(A;;CCLCSWRPLOCRRC;;;BA)(A;;CCLCSWRPLOCRRC;;;IU)(A;;CCLCSWRPLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736)

Це досить некрасивий випадок, і Microsoft повністю недокументований Microsoft, але ми будемо мати удар при його розшифровці. Спочатку за допомогою переносу слів:

D:
   (A;;CCLCSWRPLOCRRC;;;BU)
   (A;;CCLCSWRPLOCRRC;;;SY)
   (A;;CCLCSWRPLOCRRC;;;BA)
   (A;;CCLCSWRPLOCRRC;;;IU)
   (A;;CCLCSWRPLOCRRC;;;SU)
   (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)
   (A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736)

Це D:означає, що це дискреційний список контролю доступу . Список контролю доступу складається з кількох записів контролю доступу (ACE):

  • D: дискреційний список контролю доступу
    • ACE1: A;;CCLCSWRPLOCRRC;;;BU
    • ACE2: A;;CCLCSWRPLOCRRC;;;SY
    • ACE3: A;;CCLCSWRPLOCRRC;;;BA
    • ACE4: A;;CCLCSWRPLOCRRC;;;IU
    • ACE5: A;;CCLCSWRPLOCRRC;;;SU
    • ACE6: A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
    • ACE7: A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736

Кожен ACE - це набір 5-ти крапкових точок з комою, після яких він застосовується.

Спочатку переглядаючи, до кого вони звертаються, випадкова стаття блогу декодує деякі з них ( archive.is ) :

  • BU: Вбудовані користувачі
  • SY: Локальна система
  • BA: Вбудовані адміністратори
  • UI: Інтерактивний користувач, який увійшов у систему
  • SU: Користувач входу в службу
  • S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464: Довірений інсталятор
  • S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736:

Ви можете отримати ім'я, пов’язане з SID, виконавши:

>wmic useraccount where sid='S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736' get name

Кожен ACE містить перелік дозволів, яким користувач дозволений або відхилений.

  • D: дискреційний список контролю доступу
    • ACE 1: A;;CCLCSWRPLOCRRC;;; вбудовані користувачі
    • ACE 2: A;;CCLCSWRPLOCRRC;;; Локальна система
    • ACE 3: A;;CCLCSWRPLOCRRC;;; вбудовані адміністратори
    • ACE 4: A;;CCLCSWRPLOCRRC;;; Інтерактивний користувач
    • ACE 5: A;;CCLCSWRPLOCRRC;;; Користувач входу в систему
    • ACE 6: A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;; Довірений інсталятор
    • ACE 7: A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;; S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736

Розбиття решти розділених з комою розділів з комою в ACE:

  • ACE: A;;CCLCSWRPLOCRRC;;;
    • AceType: AACCESS_ALLOWED_ACE_TYPE
    • AceFlags: (немає)
    • AccessMask: CC LC SW RP LO CR RC
      • CC: CREATE_CHILD
      • LC: LIST_CHILDREN
      • SW: SELF_WRITE
      • RP: READ_PROPERTY
      • LO: LIST_OBJECT
      • CR: CONTROL_ACCESS
      • RC: READ_CONTROL
    • ObjectGuid: (немає)
    • InheritObjectGuid: (немає)

Провідні Aзасоби Дозволено , а дозволи - двобуквені коди:

  • D: дискреційний список контролю доступу
    • ACE 1 : Дозволити,, CC LC SW RP LO CR RCВбудовані користувачі
    • ACE 2 : Дозволити,, CC LC SW RP LO CR RCМісцева система
    • ACE 3 : Дозволити CC LC SW RP LO CR RC, вбудовані адміністратори
    • ACE 4 : Дозволити,, CC LC SW RP LO CR RCІнтерактивний користувач
    • ACE 5 : Дозволити CC LC SW RP LO CR RC,, Користувач вхід у систему
    • ACE 6 : Дозволити CC LC SW RP LO CR RC DC WP DT SD WD WO,, Довірений інсталятор
    • ACE 7 : Дозволити CC LC SW RP LO CR RC DC WP DT SD WD WO,, S-1-5-80-1913148863-3492339771-4165695881-2087618961-4109116736

І саме тут мені доведеться зупинитися, щоб зберегти свою роботу. Цей шлях, як зупинити службу Windows Defender, цікавий і все: але я вже його зупинив, і мій ПК все ще не поводиться.

Спойлер:

sc sdset WinDefend [newSDLString]

Бонусне читання


1

Легкий метод powerhell знаходиться з відповіді, яку я опублікував на питання, пізніше позначений для цього дублікатом.

Найпростіший спосіб зробити це - скористатися паттерном повноважень, щоб його відключити, команда, яку ви, мабуть, хочете, це така

Set-MpPreference -DisableRealtimeMonitoring $true
Get-Service WinDefend | stop-service 

Статтю про використання повноважень для відключення / включення Windows Defender див. Тут: http://wmug.co.uk/wmug/b/pwin/archive/2015/05/12/quickly-disable-windows-defender-on-windows -10-використання-powershell

Ось стаття про техніку для більш детального ознайомлення з доступними командлетами захисника: https://technet.microsoft.com/en-us/library/dn433280.aspx


Я не вірю, що це зупинить і вимкне саму послугу. Він просто відключає можливості реального часу Windows Defender, що просто можна зробити через "Налаштування", не потребуючи аплету PowerShell.
Рамхаунд

@Ramhound відредаговано для сервісу mgmt з посиланням. Я не на 100%, вона зупинить послугу без того ж питання, що і чистий стоп-сервіс, але мені пощастило з powerhell і не вірю псевдонім get / stop-service до net-stop
Abraxas

1

Я виявив, що наступна процедура працює добре; він не видаляє і не відключає Windows Defender, але він вимикає службу Windows Defender SERVICE, зупиняє все запуску та сканування в режимі реального часу і не дозволяє Windows Defender Scan в режимі реального часу самостійно включатися. (Він залишає Windows Defender на місці, тому ви можете використовувати його для сканування підозрілих файлів на вимогу.)

ПРОЦЕДУРА:

  1. Знайдіть, скачайте, встановіть набір програм "SysInternals".
  2. Запустіть програму "AutoRuns".
  3. Знайдіть "Служба захисту Windows".
  4. Зніміть прапорець.
  5. Перезавантажте комп'ютер.

Після цього час мого запуску скоротився з 20 хв до 5 хв, а використання пам'яті після запуску (до запуску будь-яких додатків) зменшилося з 2,1 ГБ до 1,2 ГБ. І коли я заглянув у "Послуги", то виявив, що "Сервіс Windows Defender", хоча він все ще є, тепер позначений "НЕ працює, вимкнено".


Надає "заборонено доступ", навіть працює адміністратором
пгр

1

Надійно та повністю відключити Windows Defender не так просто. Існує сценарій PowerShell, який видаляє Windows Defender, але пізніше ви не зможете його встановити назад. Цей сценарій вимагає двох перезавантажень.

Просто завантажте Debloat-Windows-10 і виконайте наступні кроки, надані автором:

  1. Розпакуйте архів;
  2. Увімкнути виконання скриптів PowerShell:

    PS> Налаштування-ВиконанняПолітика без обмежень

  3. Розблокувати сценарії та модулі PowerShell в цьому каталозі:

    PS> ls -Recurse * .ps1 | Розблокувати-файл PS> ls -Recurse * .psm1 | Розблокувати файл

  4. Біжи scripts\disable-windows-defender.ps1

  5. Перезавантажте комп'ютер (звичайним способом або через PS > Restart-Computer)
  6. Запустіть scripts\disable-windows-defender.ps1ще раз.
  7. Перезавантажте комп'ютер ще раз.

Це не найпростіший спосіб, але дуже надійний і стійкий.

Існують також сценарії для видалення непотрібних програм, таких як BingFinance, Skype, OneDrive тощо - якщо вони вам не потрібні.

В архіві також є багато сценаріїв, які можуть вам бути корисними.

Зауважте, що ці сценарії незворотно видаляють файли і можуть видаляти життєво важливі функції Windows. Наприклад, вони можуть повністю відключити меню "Пуск"!

Не запускайте disable-ShellExperienceHost.batцей пакет, інакше меню "Пуск" перестане відкриватися.


0

Мені вдалося відключити його за допомогою Autoruns; на вкладці послуг є запис WinDefend, зніміть прапорець і перезавантажте.


Надає "заборонено доступ", навіть працює адміністратором
пгр

0

Найпростіший спосіб, який я знайшов - це відкрити командний рядок адміністратора та запустити:

reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /t REG_DWORD /v DisableAntiSpyware /f /d 1

Потім перезавантажте. Мені не вдалося знайти, щоб відключити послугу, як тільки вона почалася з перезавантаження.


0

На мій досвід, налаштування групової політики - це найнадійніший спосіб зупинити Windows Defender та його виконуваний Antimalware Service. Однак я нещодавно зіткнувся з ситуацією, коли встановлення групової політики не мало жодного ефекту, і виконуваний файл Antimalware продовжував працювати і їсти в моєму процесорі.

Я закінчив писати невеликий сценарій, щоб взяти право власності на виконуваний файл і заборонити читати та виконувати права доступу до нього. Це вирішило проблему. Сценарій нижче.

@echo off

echo.
echo Disabling Windows Defender Antimalware Executable
echo Note: must be run with Admin permissions
echo.

rem taking ownership of Windows Defender files so that we can change their permissions
takeown /f "%PROGRAMDATA%\Microsoft\Windows Defender\Platform" /A /r /d y > takeown-result.txt

rem denying read and execute for all MsMpEng.exe files found in the directory structure (there may be multiple versions)
icacls %PROGRAMDATA%"\Microsoft\Windows Defender\Platform\*MsMpEng.exe" /deny SYSTEM:(RX) /T /C  /deny Administrators:(RX) /T /C   /deny Users:(RX) /T /C

@echo on

Це працювало для мене в Windows 10 Pro [Версія 10.0.18362.476], і пережив перезавантаження. Але мій шлях бувc:\Program Files\Windows Defender\MsMpEng.exe
пгр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.