C#:登錄檔操作
阿新 • • 發佈:2019-01-07
參考資料:
******************************************************************
介面:
程式碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Win32; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btn1_Click(object sender, EventArgs e) //開啟或新建並讀取登錄檔項值 { try { //對應HKEY_CURRENT_USER基項分支 RegistryKey cu1 = Registry.CurrentUser; //開啟path1項 RegistryKey path1 = cu1.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true); if (path1 == null) //判斷路徑是否存在 { //如果路徑不存在,則建立路徑 RegistryKey product = cu1.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System"); label2.Text = "已新建項!"; } else { //如果路徑存在 string[] sValueNameColl; sValueNameColl = path1.GetValueNames(); //獲取path1下所有鍵值的名稱 bool isValue1 = false; //用於判斷鍵是否存在 bool isValue2 = false; //用於判斷鍵是否存在 foreach (string sName in sValueNameColl) //迴圈判斷兩個鍵值是否存在 { if (sName == "DisableChangePassword") //如果鍵名稱DisableChangePassword存在,則把isValue1置為真 { isValue1 = true; } if(sName == "dword") //如果鍵名稱dword存在,則把isValue2置為真 { isValue2 = true; } } if (isValue1 == false) //如果鍵名稱DisableChangePassword不存在,則建立該鍵 { //三個引數(名稱,資料/鍵值,型別) //型別RegistryValueKind.String,即登錄檔中的REG_SZ,意思是“固定長度的unicode,以NULL結束的字串”。 path1.SetValue("DisableChangePassword", "china", RegistryValueKind.String); label2.Text = "已新建鍵值DisableChangePassword!"; } if (isValue2 == false) //如果鍵名稱dword不存在,則建立該鍵 { //三個引數(名稱,資料/鍵值,型別) //型別RegistryValueKind.DWord,即登錄檔中的REG_DWORD,意思是“32位數字,由 4 位元組長(32 位整數)的數字表示的資料”。 path1.SetValue("dword", "0", RegistryValueKind.DWord); label2.Text = "已新建鍵值dword!"; } //讀取鍵值DisableChangePassword,dword的值,並顯示 label2.Text = "DisableChangePassword的值為:" + path1.GetValue("DisableChangePassword").ToString() + "\r\ndword的值為:" + path1.GetValue("dword").ToString(); } cu1.Close(); path1.Close(); } catch (Exception) { throw; } } private void Form1_Load(object sender, EventArgs e) { label2.Text = ""; } private void btn2_Click(object sender, EventArgs e) //修改登錄檔項值 { try { //對應HKEY_CURRENT_USER基項分支 RegistryKey cu1 = Registry.CurrentUser; //開啟path1項 RegistryKey path1 = cu1.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true); if (path1 == null) //判斷路徑是否存在 { //如果路徑不存在 label2.Text = "該項不存在!"; } else { //如果路徑存在 string[] sValueNameColl; sValueNameColl = path1.GetValueNames(); //獲取path1下所有鍵值的名稱 bool isValue1 = false; //用於判斷鍵是否存在 foreach (string sName in sValueNameColl) //迴圈判斷兩個鍵值是否存在 { if (sName == "dword") //如果鍵名稱dword存在,則把isValue1置為真 { isValue1 = true; } } if (isValue1 == true) //如果鍵名稱dword存在,則把該鍵的值修改為1 { //三個引數(名稱,資料/鍵值,型別) //型別RegistryValueKind.DWord,即登錄檔中的REG_DWORD,意思是“32位數字,由 4 位元組長(32 位整數)的數字表示的資料”。 path1.SetValue("dword", "1", RegistryValueKind.DWord); label2.Text = "已修改鍵值dword的值!"; } else { label2.Text = "鍵值dword不存在!"; } //讀取鍵值DisableChangePassword,dword的值,並顯示 label2.Text = "dword的值已改為:" + path1.GetValue("dword").ToString(); } cu1.Close(); path1.Close(); } catch (Exception) { throw; } } } }