Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何制作程序来检测实时保护是否开启?_C# - Fatal编程技术网

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正在运行,则意味着实时保护已启用!