該類實現了注冊表讀取、寫入、刪除、查找等功能。
實現代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; namespace TagReceiver { class RegistryHelper { /// <summary> /// 讀取指定名稱的注冊表的值 /// </summary> /// <param name="name"></param> /// <returns></returns> public string GetRegistryData(RegistryKey root, string subkey, string name) { string registData = ""; RegistryKey myKey = root.OpenSubKey(subkey, true); if (myKey != null) { registData = myKey.GetValue(name).ToString(); } return registData; } /// <summary> /// 向注冊表中寫數據 /// </summary> /// <param name="name"></param> /// <param name="tovalue"></param> public void SetRegistryData(RegistryKey root, string subkey, string name, string value) { RegistryKey aimdir = root.CreateSubKey(subkey); aimdir.SetValue(name, value); } /// <summary> /// 刪除注冊表中指定的注冊表項 /// </summary> /// <param name="name"></param> public void DeleteRegist(RegistryKey root, string subkey, string name) { string[] subkeyNames; RegistryKey myKey = root.OpenSubKey(subkey, true); subkeyNames = myKey.GetSubKeyNames(); foreach (string aimKey in subkeyNames) { if(aimKey == name) myKey.DeleteSubKeyTree(name); } } /// <summary> /// 判斷指定注冊表項是否存在 /// </summary> /// <param name="name"></param> /// <returns></returns> public bool IsRegistryExist(RegistryKey root, string subkey, string name) { bool _exit = false; string[] subkeyNames; RegistryKey myKey = root.OpenSubKey(subkey, true); subkeyNames = myKey.GetSubKeyNames(); foreach(string keyName in subkeyNames) { if(keyName == name) { _exit = true; return _exit; } } return _exit; } } }
如何調用:
讀注冊表: RegistryHelper rh = new RegistryHelper(); string portName = rh.GetRegistryData(Registry.LocalMachine, "SOFTWARE\\TagReceiver\\Params\\SerialPort", "PortName"); 寫注冊表: RegistryHelper rh = new RegistryHelper(); rh.SetRegistryData(Registry.LocalMachine, "SOFTWARE\\TagReceiver\\Params\\SerialPort", "PortName", portName);
所有代碼在WinXP SP3+VS2010下測試通過。