如何使用C#.NET進行注冊表項和鍵值的創建、刪除、修改、獲取等操作
2026-04-25 18:44:24
供稿:網友
最近在寫軟件的時候,又使用到了C#操作系統注冊表方面的編程知識,想要學習C#編程的同學,學會對系統注冊表的鍵值創建、刪除、修改、獲取等操作是十分必要的,因為系統注冊表里包含了大量的系統和軟件安裝信息,熟練掌握C#對注冊表的操作使用,可以讓我們在日常的小應用程序開發中得心應手,OK,下面小編就將自己在平常使用C#操作注冊表的心得經驗給大家分享一下,喜歡C#編程的同學趕緊看過來,對編程不感冒沒有興趣的同學請略過此文。
要使用C#對系統注冊表進行操作,首先我們需要引入一個命名空間:
using Microsoft.Win32;
在這個命名空間下包含了許多對注冊表進行操作的類,比如常用的RegistryKey類,這個類可以幫助我們定位到注冊表最開頭的分支,然后進行下一步的操作,下面以具體例子給大家講解。
注冊表開頭分支,也叫根分支,分別是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG。
聲明:以下例子內容中涉及到了注冊表的真實操作,如果對注冊表不甚了解,請不要直接用以下例子進行操作。
1、使用C#打開注冊表項
//使用RegistryKey的OpenSubKey()方法打開注冊表里的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,注意該方法后面還有一個bool類型的值true,這個代表可寫入操作。
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion",true);
tips:如果注冊表項不存在,則拋出異常。
2、使用C#創建注冊表項
//使用RegistryKey的CreateSubKey()方法在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下創建一個名字叫YiShiMei的項。
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.CreateSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei");
tips:如果當前注冊表已經存在該項,不影響該操作的執行。
3、使用C#刪除注冊表項
//使用RegistryKey的DeleteSubKey()方法刪除注冊表中的SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei項。
RegistryKey key = Registry.LocalMachine;
key.DeleteSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei",true);
tips:如果該項不存在,則拋出異常。
4、使用C#創建、刪除、獲取注冊表鍵值
//不管是創建、獲取、刪除鍵值,首先都需要打開要設置/創建鍵值的注冊表項
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion",true); //該鍵值須存在
a、設置/創建注冊表鍵值
//使用SetValue()方法設置/創建注冊表鍵值,OpenSubKey()方法中的bool值須為true(可寫入)。另外,如果注冊表中已存在該鍵值,執行操作后,會覆蓋該鍵值。
software.SetValue("武林網",www.56wlw.com);//給CurrentVersion創建一個鍵名為武林網,值為www.56wlw.com的鍵值
tips:SetValue()方法有三個參數,SetValue(鍵名,鍵值,鍵值類型),鍵值類型有字符串,二進制,Dword等,不設置鍵值類型時默認為字符串類型。
b、獲取注冊表鍵值
//使用GetValue()方法獲取注冊表鍵值,當我們只是要獲取鍵值時,OpenSubKey()方法中的bool值可為false,也可去掉bool值。
string GetValue = software.GetValue("SystemRoot").ToString();//獲取CurrentVersion項下鍵名為SystemRoot的鍵值。
c、刪除注冊表鍵值
//使用DeleteValue()方法刪除注冊表鍵值,OpenSubKey()方法中的bool值須為true(可寫入)。
soft.DeleteValue("SystemRoot");//刪除注冊表中CurrentVersion項下鍵名為SystemRoot的鍵值。
tips:要刪除的鍵值名稱須存在,否則拋出異常。