使用 PowerShell 或 C# 启用 Windows Defender 篡改保护

使用 PowerShell 或 C# 启用 Windows Defender 篡改保护

我完全理解无法通过编程禁用篡改保护,因为这会违背初衷。不过,既然 InTune 或 Endpoint 许可证可以做到这一点,那么显然以某种方式是可行的(微软后门?)。

问题是,我不想禁用 Windows Defender 的篡改保护,我只希望能够以编程方式启用它。我认为这种“积极行动”是可能的。

Set-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Microsoft\Windows Defender\Features' -Name TamperProtection -Value ([int] 5)

首先,我尝试从高架控制台进行操作,结果access is not allowed(我没想到这会起作用):

在此处输入图片描述

然后我尝试在运行提升的控制台时nt authority\system得到unauthorized operation

在此处输入图片描述

然而根据权限窗口中的FeaturesWindows Defender键值,SYSTEMFull Control

在此处输入图片描述

为什么这不起作用,有解决方法吗?我可以应用 C# 或 PowerShell 解决方案。编程解决方案将始终在 SYSTEM 帐户的上下文中本地执行。

答案1

是的,您可以编写脚本来禁用、启用和重新启用。请参阅我关于禁用的其他答案,它使用与启用相同的方法,只是禁用步骤更多:

如何禁用防篡改保护

您需要 TI 权限才能修改该注册表项,仅凭系统权限是不够的。虽然我确信您可以在 PowerShell 中执行 C# 调用以获取 TI 权限,但让我们使用一个已经可以执行此操作的应用程序:

Nirsoft-AdvancedRun

%windir%\script-ps内容:

reg.exe add "HKLM\SOFTWARE\Microsoft\Windows Defender\Features" /v TamperProtection /t REG_DWORD /d 5 /f

TamperProtection.cfg内容:

[General]
EXEFilename=
CommandLine=(gc script-ps) | iex
StartDirectory=%windir%
WaitProcess=0
PriorityClass=32
WindowState=0
UseWindowPosition=0
WindowPosition=20,20
UseWindowSize=0
WindowSize=640,400
RunAs=8
RunAsProcessName=
EnvironmentVariablesMode=1
OSCompatMode=0
UseSearchPath=0
ParseVarCommandLine=1
UseAffinityMask=0
AffinityMask=0 1
Compat640480=0
CompatDisableVisualThemes=0
CompatDisableDesktopComp=0
CompatDisableFullScreenOpt=0
CompatHighDPI=0
CompatColors=0
RunAsUserName=
RunAsDomain=
RunFromService=0
ComputerName=
RunMode=4
ShellExecuteAction=
CommandWindowMode=2
[EnvironmentVariables]
Lines=0
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 65 00 00 00 18 00 00 00 9A 03 00 00 A0 02 00 00

现在在 CMD - 管理员中运行此命令:

AdvancedRun.exe /Run TamperProtection.cfg

运行后重新启动,现在 TamperProtection 已启用。

已在 Win11 Enterprise 22H2 默认安装中验证

虽然这种方法目前有效,但如果 M$ 修补这个“答案”,将来可能就不再有效。

相关内容