.NET Core读写Windows注册表

环境

  • .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. 效果

相关阅读

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据