C#操作注冊(cè)表的方法
1.讀取指定名稱(chēng)的注冊(cè)表的值
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;
}
以上是讀取的注冊(cè)表中HKEY_LOCAL_MACHINE\SOFTWARE目錄下的XXX目錄中名稱(chēng)為name的注冊(cè)表值;
2.向注冊(cè)表中寫(xiě)數(shù)據(jù)
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);
}
以上是在注冊(cè)表中HKEY_LOCAL_MACHINE\SOFTWARE目錄下新建XXX目錄并在此目錄下創(chuàng)建名稱(chēng)為name值為tovalue的注冊(cè)表項(xiàng);
3.刪除注冊(cè)表中指定的注冊(cè)表項(xiàng)
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);
}
}
以上是在注冊(cè)表中HKEY_LOCAL_MACHINE\SOFTWARE目錄下XXX目錄中刪除名稱(chēng)為name注冊(cè)表項(xiàng);
4.判斷指定注冊(cè)表項(xiàng)是否存在
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;
}
以上是在注冊(cè)表中HKEY_LOCAL_MACHINE\SOFTWARE目錄下XXX目錄中判斷名稱(chēng)為name注冊(cè)表項(xiàng)是否存在,這一方法在刪除注冊(cè)表時(shí)已經(jīng)存在,在新建一注冊(cè)表項(xiàng)時(shí)也應(yīng)有相應(yīng)判斷;
using System.Windows.Forms;
using Microsoft.Win32;
namespace RegeditManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//創(chuàng)建并寫(xiě)入
private void button1_Click(object sender, EventArgs e)
{
RegistryKey key = Registry.LocalMachine;
try
{
RegistryKey software = key.CreateSubKey("software\\LabManager");
software = key.OpenSubKey("software\\LabManager", true);
software.SetValue("Address", @"C:\Program Files\實(shí)驗(yàn)室管理系統(tǒng)\dbcom.xml");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
key.Close();
}
}
//讀取
private void button2_Click(object sender, EventArgs e)
{
string info = string.Empty;
RegistryKey key=Registry.LocalMachine;
try
{
key = key.OpenSubKey("software\\LabManager");
if (IsRegeditKeyExit("software\\LabManager", "Address"))
{
info = key.GetValue("Address").ToString();
MessageBox.Show("注冊(cè)表里的信息為:" + info);
}
else
{
MessageBox.Show("鍵值A(chǔ)ddress不存在;");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
key.Close();
}
}
//刪除
private void button3_Click(object sender, EventArgs e)
{
RegistryKey key = Registry.LocalMachine;
try
{
key = key.OpenSubKey("software\\LabManager",true);
if (IsRegeditKeyExit("software\\LabManager", "Address"))
{
key.DeleteValue("Address");
MessageBox.Show("刪除成功");
}
else
{
MessageBox.Show("鍵值A(chǔ)ddress不存在;");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
key.Close();
}
}
/// <summary>
/// 判斷鍵值是否存在
/// </summary>
/// <param name="RegistryStr">注冊(cè)表項(xiàng)</param>
/// <param name="KeyStr">鍵值</param>
/// <returns></returns>
private bool IsRegeditKeyExit(string RegistryStr,string KeyStr)
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey(RegistryStr);
subkeyNames = software.GetValueNames();
foreach (string keyName in subkeyNames)
{
if (keyName == KeyStr) //判斷鍵值的名稱(chēng)
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
/// <summary>
/// 判斷注冊(cè)表項(xiàng)是否存在
/// </summary>
/// <param name="RegistryName">例如:SOFTWARE</param>
/// <param name="ValueStr">例如:LabManager</param>
/// <returns></returns>
private bool IsRegeditItemExist(string RegistryName,string ValueStr)
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey(RegistryName);
subkeyNames = software.GetSubKeyNames();
//取得該項(xiàng)下所有子項(xiàng)的名稱(chēng)的序列,并傳遞給預(yù)定的數(shù)組中
foreach (string keyName in subkeyNames) //遍歷整個(gè)數(shù)組
{
if (keyName == ValueStr) //判斷子項(xiàng)的名稱(chēng)
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
}
}
相關(guān)文章
C#模板方法模式(Template Method Pattern)實(shí)例教程
這篇文章主要介紹了C#模板方法模式(Template Method Pattern),以實(shí)例形式講述了C#抽象類(lèi)模板方法的用法,具有很高的實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09C#使用TcpListener及TcpClient開(kāi)發(fā)一個(gè)簡(jiǎn)單的Chat工具實(shí)例
下面小編就為大家分享一篇C#使用TcpListener及TcpClient開(kāi)發(fā)一個(gè)簡(jiǎn)單的Chat工具實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12如何用C#在PC上查找連接藍(lán)牙設(shè)備并實(shí)現(xiàn)數(shù)據(jù)傳輸
這篇文章主要介紹了如何用C#在PC上查找連接藍(lán)牙設(shè)備并實(shí)現(xiàn)數(shù)據(jù)傳輸,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類(lèi)實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)易的加密、解密字符串工具類(lèi),涉及C#字符串加密與加密的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運(yùn)算符/表等操作)
這篇文章主要介紹了C# DataTable中Compute方法用法,總結(jié)分析了DataTable中Compute方法常見(jiàn)的數(shù)值運(yùn)算操作、字符串操作、運(yùn)算符操作、表運(yùn)算等相關(guān)技巧,需要的朋友可以參考下2016-06-06C#使用第三方組件實(shí)現(xiàn)動(dòng)態(tài)解析和求值字符串表達(dá)式
這篇文章主要介紹了C#如何使用第三方組件(LambdaParser、DynamicExpresso、Z.Expressions)實(shí)現(xiàn)動(dòng)態(tài)解析和求值字符串表達(dá)式,感興趣的小伙伴可以跟隨小編一起了解一下2022-06-06