c# RegistryKey註冊表操作



微軟的幫助

Registry..::.GetValue 方法,

檢索與指定的註冊表項中的指定名稱關聯的值。如果在指定的項中未找到該名稱,則返回您提供的默認值;或者,如果指定的項不存在,則返回 nullNothingnullptrnull 引用(在 Visual Basic 中爲 Nothing

Registry..::.SetValue 方法,設置指定的註冊表項的指定名稱/值對。如果指定的項不存在,則創建該項。

 

 

C#程序開發範例寶典

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Microsoft.Win32;
namespace Ex08_01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string strPath = "HKEY_CURRENT_CONFIG//HyWork";//設默認值
                object objName = (object)this.textBox1.Text.Trim();
                object objPwd = (object)this.textBox2.Text.Trim();
                Registry.SetValue(strPath, "用戶名", objName, RegistryValueKind.String);
                Registry.SetValue(strPath, "密碼", objPwd, RegistryValueKind.String);
                this.label3.Text = "恭喜,信息以成功寫入注刪表";
            }
            catch
            {
                return;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                RegistryKey rk = Registry.CurrentConfig.OpenSubKey("HyWork");
                string strName = rk.GetValue("用戶名", "Null").ToString();
                string strPwd = rk.GetValue("密碼", "Null").ToString();
                MessageBox.Show("用戶名:" + strName + "/r/n" + "密  碼:"+strPwd);
                this.label3.Text = "恭喜,信息以成功提取";
            }
            catch
            {
                return;
            }
        }
    }
}

 

 

以下從‘讀’‘寫’‘刪除’‘判斷’四個事例實現對註冊表的簡單操作
1.讀取指定名稱的註冊表的值
private string GetRegistData(string name)
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
registData = aimdir.GetValue(name).ToString();
return registData;
}
以上是讀取的註冊表中HKEY_LOCAL_MACHINE/SOFTWARE目錄下的XXX目錄中名稱爲name的註冊表值;

2.向註冊表中寫數據
private void WTRegedit(string name,string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.CreateSubKey("XXX");
aimdir.SetValue(name,tovalue);
}
以上是在註冊表中HKEY_LOCAL_MACHINE/SOFTWARE目錄下新建XXX目錄並在此目錄下創建名稱爲name值爲tovalue的註冊表項;

3.刪除註冊表中指定的註冊表項
private void DeleteRegist(string name)
{
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
aimnames = aimdir.GetSubKeyNames();
foreach(string aimKey in aimnames)
{
if(aimKey == name)
aimdir.DeleteSubKeyTree(name);
}
}
以上是在註冊表中HKEY_LOCAL_MACHINE/SOFTWARE目錄下XXX目錄中刪除名稱爲name註冊表項;

4.判斷指定註冊表項是否存在
private bool IsRegeditExit(string name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
subkeyNames = aimdir.GetSubKeyNames();
foreach(string keyName in subkeyNames)
{
if(keyName == name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
以上是在註冊表中HKEY_LOCAL_MACHINE/SOFTWARE目錄下XXX目錄中判斷名稱爲name註冊表項是否存在,這一方法在刪除註冊表時已經存在,在新建一註冊表項時也應有相應判斷。

 

 

http://blog.csdn.net/greenerycn/archive/2007/03/06/1522616.aspx

 

C#讀寫註冊表

一直想寫個c#版的去箭頭工具,今天特意寫了一下,瞭解了.net下操作註冊表的方法.

先說說.net下的函數:

        NET框架在Microsoft.Win32名字空間中提供了兩個類來操作註冊表:RegistryRegistryKey。這兩個類都是密封類不允許被繼承。下面我們分別來介紹這兩個類。
        Registry類提供了7個公共的靜態域,分別代表7個基本主鍵(其中兩個在XP系統中沒有)分別是: 

        Registry.ClassesRoot 對應於HKEY_CLASSES_ROOT主鍵
  Registry.CurrentUser 對應於HKEY_CURRENT_USER主鍵
  Registry.LocalMachine 對應於 HKEY_LOCAL_MACHINE主鍵
  Registry.User 對應於 HKEY_USER主鍵
  Registry.CurrentConfig 對應於HEKY_CURRENT_CONFIG主鍵
  Registry.DynDa 對應於HKEY_DYN_DATA主鍵
  Registry.PerformanceData 對應於HKEY_PERFORMANCE_DATA主鍵

        RegistryKey類中提供了對註冊表操作的方法。要注意的是操作註冊表必須符合系統權限,否則將會拋出錯誤。
      
       創建子鍵的方法原型爲:
                            public RegistryKey CreateSubKey(string sunbkey);
               參數sunbkey表示要創建的子鍵的名稱或路徑名。創建成功返回被創建的子鍵,否則返回null。
        打開子鍵的方法原型爲:
                            public RegistryKey OpenSubKey(string name);
                            public RegistryKey OpenSubKey(string name,bool writable);
                 參數name表示要打開的子鍵名或其路徑名,參數writable表示被打開的子鍵是否允許被修改,第一個方法打開的子鍵是隻讀的。
         刪除子鍵的方法原型爲:
                            public void DeleteSubKey(string subkey);
                            該方法用於刪除指定的主鍵。如果要刪除的子鍵還包含主鍵則刪除失敗,並返回一個異常,如果要徹底刪除該子鍵極其目錄下的子鍵可以用方法DeleteSubKeyTree,該方法原型如下:
                            public void DeleteSunKeyTree(string subkey);
         讀取鍵值的方法原型如下:
                            public object GetValue(string name);
                            public object GetValue(string name,object defaultValue);
                        參數name表示鍵的名稱,返回類型是一個object類型,如果指定的鍵不存在則返回null。如果失敗又不希望返回的值是null則可以指定參數defaultValue,指定了參數則在讀取失敗的情況下返回該參數指定的值。
          設置鍵值的方法原型如下:
                            public object SetValue(string name,object value);
          刪除鍵值的方法原型如下:
                            public void DeleteValue(string name); 

下面是去除快捷方式上的箭頭的源代碼:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;

//學習c#操作註冊表
namespace ConsoleApplication2
{
    
class Program
    {
        
static void Main(string[] args)
        {
            RegistryKey  test_rk;
            Console.WriteLine(
"*********************************************************");
            Console.WriteLine(
"        快捷方式箭頭去除工具 2007");
            Console.WriteLine(
"*********************************************************");
            test_rk 
= Registry.ClassesRoot.OpenSubKey("lnkfile",true);
            
if (test_rk.GetValue("IsShortcut"== null)
            {
                Console.WriteLine(
"快捷方式上的箭頭已去除!");
            }   
            
else
            {
                test_rk.DeleteValue(
"IsShortcut");
                Console.WriteLine(
"執行成功!請註銷後查看效果.");     
            }
            test_rk.Close(); //不要忘記哦
            Console.Read();
            }    
        }
    }

參考文章:

C#操作註冊表 :http://blog.csdn.net/jxufewbt/archive/2006/06/29/849595.aspx

 PS,不要忘記關閉註冊表

發佈了45 篇原創文章 · 獲贊 9 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章