C#操作註冊表的方法

來源:互聯網
上載者:User

using Microsoft.Win32 ;

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登錄機碼是否存在,這一方法在刪除註冊表時已經存在,在建立一登錄機碼時也應有相應判斷;

複製代碼 代碼如下:using System.Windows.Forms;
using Microsoft.Win32;

namespace RegeditManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//建立並寫入
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\實驗室管理系統\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("註冊表裡的資訊為:" + info);
}
else
{
MessageBox.Show("索引值Address不存在;");
}
}
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("索引值Address不存在;");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
key.Close();
}
}

/// <summary>
/// 判斷索引值是否存在
/// </summary>
/// <param name="RegistryStr">登錄機碼</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) //判斷索引值的名稱
{
hkml.Close();

return true;
}
}
hkml.Close();

return false;
}

/// <summary>
/// 判斷登錄機碼是否存在
/// </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();

//取得該項下所有子項的名稱的序列,並傳遞給預定的數組中

foreach (string keyName in subkeyNames) //遍曆整個數組
{
if (keyName == ValueStr) //判斷子項的名稱
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;

}
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.