版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}
}
}