C#操作注冊表——讀、寫、刪除、判斷等基本操作


一、引入命名空間:

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; }

 

注:如果沒有該注冊表項或鍵值,則返回的值為空值,若不經處理運行程序會拋出異常。

有錯誤的地方歡迎指出,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM