环境

  • .NET Core 2.1
  • Windows 10 Pro

参考

步骤

  1. 新建.NET Core 控制台工程
  2. 安装注册表API包
    1. 方法一
      • 在程序包管理器控制台(NuGet Console)中输入指令安装
        dotnet add .\[工程名] package Microsoft.Win32.Registry
    2. 方法二
      • 打开【工具-NuGet包管理器-管理解决方案的NuGet程序包】
      • 搜索【Microsoft.Win32.Registry】
      • 安装到解决方案
  3. 假设要写入到CurrentUser中(不需要管理员权限),引入Microsoft.Win32
    private static void SetKey()
    {
        using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\azhuge233")) {
            key.SetValue("Title", $".NET Core is awesome! {DateTime.UtcNow:MM/dd/yyyy-HHmmss}");
        }
    }

    读取

    private static void GetKey()
    {
        using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\azhuge233"))
        {
            if (key != null)
            {
                Object o = key.GetValue("Title");
                Console.WriteLine(o.ToString());
            }
        }
    }

    因为注册表只能用于Windows,所以需要判断操作系统

    if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        //do something...
    }

    完整代码

    using System;
    using System.ComponentModel.Design;
    using System.Runtime.InteropServices;
    using Microsoft.Win32;
    
    namespace Registrt_test {
        class Program {
    
            private static void SetKey()
            {
                using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\azhuge233")) {
                    key.SetValue("Title", $".NET Core is awesome! {DateTime.UtcNow:MM/dd/yyyy-HHmmss}");
                }
            }
    
            private static void GetKey()
            {
                using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\azhuge233"))
                {
                    if (key != null)
                    {
                        Object o = key.GetValue("Title");
                        Console.WriteLine(o.ToString());
                    }
                }
            }
    
            static void Main(string[] args) {
                if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                {
                    try
                    {
                        SetKey();
                        GetKey();
                        Console.ReadLine();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message.ToString());
                    }
                }
            }
        }
    }
    
  4. 效果

相关阅读

18.12.25 更新:

将Antimalware Service Executable添加到Windows Defender排除项:

  • 打开Windows Defender
  • 进入【病毒和威胁防护-“病毒和威胁防护”管理设置-添加或删除排除项】
  • 选择【添加排除项-进程】
  • 输入【MsMpEng.exe】,确认

原文:

  •  打开组策略
    • 搜索栏搜索gpedit
    • win+R后输入gpedit.msc
  • 进入【管理模板-Windows组件-Windows Defender防病毒程序】
  • 进入【实时保护】
  • 禁用【不论何时启动实时保护,都会启动进程扫描】,返回上级目录
  • 进入【扫描】
  • 禁用以下项
    • 指定每天进行快速扫描的时间间隔
    • 仅当计算机处于打开但未使用状态才启动计划扫描
    • 指定每天进行快速扫描的时间
    • 指定每天的不同时间运行计划扫描
  • 启用【指定每周的不同时间运行计划扫描】并设置为【从不】