C# 如何制作程序来检测实时保护是否开启?
我想检测实时保护是否开启,比如如果用户启动我的程序,它会告诉我-您的C# 如何制作程序来检测实时保护是否开启?,c#,C#,我想检测实时保护是否开启,比如如果用户启动我的程序,它会告诉我-您的RealTimeProtection开启,可能会阻止某些事情! 我不知道怎么做。如果您的唯一目标是检测该选项是启用还是禁用,那么最好的办法就是找到windows保留该设置的注册表项 经过一段时间后,我们会发现它存储在注册表项HKLM\SOFTWARE\Microsoft\Windows Defender\Real Time Protection的DisableRealtimeMonitoring中,因此有了这些信息,解决方案就变
RealTimeProtection
开启,可能会阻止某些事情!
我不知道怎么做。如果您的唯一目标是检测该选项是启用还是禁用,那么最好的办法就是找到windows保留该设置的注册表项 经过一段时间后,我们会发现它存储在注册表项
HKLM\SOFTWARE\Microsoft\Windows Defender\Real Time Protection
的DisableRealtimeMonitoring
中,因此有了这些信息,解决方案就变得微不足道了
如果registrykey存在并且其值设置为1,则在运行时将输出以下代码
注意,我们需要调用以获取注册表的64位配置单元,以防您的进程作为32位进程运行
其余的都是直接用一个和来获得我们需要的信息
请注意,您没有该密钥的写入权限。你需要先提升才能改变它
// using Microsoft.Win32;
var path = @"SOFTWARE\Microsoft\Windows Defender\Real-Time Protection";
var key = "DisableRealtimeMonitoring";
var regkey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
if (regkey != null) {
var subkey = regkey.OpenSubKey(path);
var val = subkey.GetValue( key );
if (val != null && val is Int32) {
var value = (int) val;
if (value == 1) {
value.Dump("Protection is off");
} else {
value.Dump("Protection is on");
}
} else {
"probably".Dump("Protection is on");
}
} else {
"huh?".Dump("key is not found");
}
现在,如果您确实发现用户已禁用此实时保护,请向用户发出警告。你不想让他们遇到麻烦。我想警告他们,我只需要一条消息,告诉他们你的实时保护在你身上!我还发现了使用服务的新方法,例如,如果服务WDNISVC正在运行,则意味着实时保护已启用!