完整可執行程式碼 reg.cs,示範登錄讀取、建立主鍵/子鍵、設定/重命名鍵值:
using System;
using System.Windows.Forms;
using Microsoft.Win32;
public class Form1 : Form {
private ListBox listBox1;
private Button btnRead, btnCreateSub, btnCreateMain, btnRename;
public Form1() { InitializeComponent(); }
private void InitializeComponent() {
// 控制項初始化與版面配置略...
btnRead.Click += btnRead_Click;
btnCreateSub.Click += btnCreateSub_Click;
btnCreateMain.Click += btnCreateMain_Click;
btnRename.Click += btnRename_Click;
}
private void btnRead_Click(object sender, EventArgs e) {
listBox1.Items.Clear();
using (var hklm = Registry.LocalMachine)
using (var hw = hklm.OpenSubKey("HARDWARE")) {
foreach (var sk in hw.GetSubKeyNames()) {
listBox1.Items.Add(sk);
using (var skKey = hw.OpenSubKey(sk))
foreach (var vn in skKey.GetValueNames())
listBox1.Items.Add($" {vn}: {skKey.GetValue(vn)}");
}
}
}
private void btnCreateSub_Click(object sender, EventArgs e) {
using (var hklm = Registry.LocalMachine)
using (var hw = hklm.OpenSubKey("HARDWARE", true)) {
var ddd = hw.CreateSubKey("ddd");
ddd.SetValue("www", "1234");
}
}
private void btnCreateMain_Click(object sender, EventArgs e) {
using (var hklm = Registry.LocalMachine)
using (var hw = hklm.OpenSubKey("HARDWARE", true)) {
var main = hw.CreateSubKey("main");
var sub = main.CreateSubKey("sub");
sub.SetValue("value", "1234");
}
}
private void btnRename_Click(object sender, EventArgs e) {
using (var hklm = Registry.LocalMachine)
using (var hw = hklm.OpenSubKey("HARDWARE", true))
using (var aaa = hw.OpenSubKey("aaa", true))
aaa.SetValue("bbb", "abcd"); // 重命名鍵值
}
public static void Main() { Application.Run(new Form1()); }
}
關鍵點:OpenSubKey(path, true) 取得可寫入權限,CreateSubKey 建立不存在的鍵,SetValue 同時支援新增與修改鍵值。