C#:注册表操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zcc9618/article/details/83042597

参考资料:

https://blog.csdn.net/yal179/article/details/40402435

https://www.cnblogs.com/boby-/p/4724255.html

******************************************************************

界面:

代码:

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;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zcc9618/article/details/83042597