Loading

.NET 5 中操作注册表方法

关于注册表

注册表是存储设备,用于提供有关应用程序、用户和默认系统设置的信息。 例如,应用程序可以使用注册表存储需要在应用程序关闭后保留的信息,并在重新加载应用程序时访问相同的信息。 例如,你可以存储颜色首选项、屏幕位置或窗口大小。 可以通过将信息存储在注册表中的不同位置来控制每个用户的此数据。

说明

C#中操作注册表,我们需要使用Registry类,提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。
命名空间: Microsoft.Win32
程序集: Microsoft.Win32.Registry.dll

public static class Registry

在.Net Framework x.应用当中,我们只需要添加Microsoft.Win32即可。

using Microsoft.Win32;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //在存储有关用户首选项的信息下面创建了一个子项TestKey
            RegistryKey testKey = Registry.CurrentUser.CreateSubKey("TestKey");
        }
    }
}

而在.NET 5当中,该功能不再默认提供,需要单独在NuGet安装,如下所示:

关于Registry类的使用范围如下:

RegistryKey

RegistryKey 表示 Windows 注册表中的项级节点。Registry 静态类中提供了多种公开RegistryKey。

字段

  • CurrentUser 存储有关用户首选项的信息。
  • LocalMachine 存储本地计算机的配置信息。
  • ClassesRoot 存储有关类型 (和类) 及其属性的信息。
  • Users 存储有关默认用户配置的信息。
  • PerformanceData 存储软件组件的性能信息。
  • CurrentConfig 存储非用户特定的硬件信息。
  • DynData 存储动态数据。

方法

Registry类还包含 static GetValue SetValue 用于设置和检索注册表项中的值的方法。 这些方法在每次使用注册表项时都将其打开和关闭,因此 RegistryKey 当你访问大量值时,它们不会在类中执行和类似的方法。

创建/读取/删除 注册表键

using Microsoft.Win32;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个TestKey注册表键值
            RegistryKey testKey = Registry.CurrentUser.CreateSubKey("TestKey");

            //创建子项
            var nameKey = testKey.CreateSubKey("Name");

            //创建键值
            nameKey.SetValue("Id", 123);
            nameKey.SetValue("Language", "China");


            //读取子项当中的值
            var readKey = testKey.OpenSubKey("Name");

            //idString=123
            var idString = readKey.GetValue("Id").ToString();

            //删除子项
            testKey.DeleteSubKey("Name");
        }
    }
}

效果

打开Windows注册表编辑器, 会发现上一步创建的注册表项,会在指定的顶级节点当中

posted @ 2021-01-19 12:47  痕迹g  阅读(780)  评论(0编辑  收藏  举报