關於注冊表
注冊表是存儲設備,用於提供有關應用程序、用戶和默認系統設置的信息。 例如,應用程序可以使用注冊表存儲需要在應用程序關閉后保留的信息,並在重新加載應用程序時訪問相同的信息。 例如,你可以存儲顏色首選項、屏幕位置或窗口大小。 可以通過將信息存儲在注冊表中的不同位置來控制每個用戶的此數據。
說明
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注冊表編輯器, 會發現上一步創建的注冊表項,會在指定的頂級節點當中

