一、引入命名空間:
using Microsoft.Win32;
二、創建注冊表項:CreateSubKey(name)方法
添加SubKey時候首先要打開一個表項,並設置參數為true,才能成功創建子項
//給要創建的注冊表設置一個變量,使用更方便
private string RegistFileName = "test";
/// <summary> /// 創建一個test注冊表項,下面包含OpenLog,和SaveLog兩個子項 /// </summary> private void CreateRegistFile() {
//SOFTWARE在LocalMachine分支下
RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE",true); RegistryKey software = key.CreateSubKey(RegistFileName); RegistryKey test = key.OpenSubKey(RegistFileName,true); RegistryKey Savekey = test.CreateSubKey("SaveLog"); }
三、刪除注冊表項:DeleteSubKey(name,true)方法
RegistryKey key = Registry.LocalMachine; RegistryKey software = key.OpenSubKey("SOFTWARE", true); RegistryKey test = software.OpenSubKey(RegistFileName, true); test.DeleteSubKey("SaveLog",true);
四、添加鍵值:SetValue(name,value)方法
/// <summary> /// 將path寫入OPenLog子項 /// </summary> private void writeToRegistFile(string path) {
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE", true);
RegistryKey test = software.OpenSubKey(RegistFileName, true);
RegistryKey OpenPath = test.OpenSubKey("OpenLog",true);
//"name"是該鍵值的name,相當於一個別名,可自行設置
OpenPath.SetValue("name", path); }
五、刪除鍵值:DeleteValue(name)方法
RegistryKey key = Registry.LocalMachine; RegistryKey software = key.OpenSubKey("SOFTWARE", true); RegistryKey test = software.OpenSubKey(RegistFileName, true);
RegistryKey OpenPath = test.OpenSubKey("SaveLog",true);
//刪除SaveLog子項下的名為SaveLog的子鍵
OpenPath.DeleteValue("name");
六、判斷注冊表項是否存在:
/// <summary> /// 判斷注冊表項是否存在 /// </summary> /// <returns>bool</returns> private bool IsRegeditItemExist() { string[] subkeyNames; RegistryKey key = Registry.LocalMachine; RegistryKey software = key.OpenSubKey("SOFTWARE"); subkeyNames = software.GetSubKeyNames(); //在這里我是判斷test表項是否存在 foreach (string keyName in subkeyNames) { if (keyName == RegistFileName) { key.Close(); return true; } } key.Close(); return false; }
七、判斷鍵值是否存在:
/// <summary> /// 判斷該路徑是否已經存在 /// </summary> /// <param name="path">路徑</param> /// <returns></returns> private bool IsRegeditKeyExit(string name) {string[] saveSubkeyNames; RegistryKey key = Registry.LocalMachine; RegistryKey software = key.OpenSubKey("SOFTWARE", true); RegistryKey test = software.OpenSubKey(RegistFileName, true); RegistryKey Savekey = test.OpenSubKey("SaveLog", true);
//獲取該子項下的所有鍵值的名稱saveSubkeyNames saveSubkeyNames = Savekey.GetSubKeyNames(); foreach(string keyName in openSubkeyNames) { if(keyName == name) { key.Close(); return false; } } key.Close(); return true; }
注:如果沒有該注冊表項或鍵值,則返回的值為空值,若不經處理運行程序會拋出異常。
有錯誤的地方歡迎指出,謝謝!
