C#教程:操作注册表
操作注册表
通过操作注册表可以很快捷、方便地解决问题,下面模仿“注册表编辑器”列出系统信息,运行结果如图1所示。
通过RegistryKey类的GetSubKeyNames方法读取子键信息列表,实现将5大根键的子键信息读取出来,放在TreeView控件中,程序代码如下:
private void Banding()
{
this.TVRegedit.Nodes.Clear();
RegistryKey rkRoot=Registry.ClassesRoot;
RegistryKey rkUse= Registry.CurrentUser;
RegistryKey rkMachine=Registry.LocalMachine;
RegistryKey rkUsers = Registry.Users;
RegistryKey rkConfig= Registry.CurrentConfig;
TreeNode tRoot = new TreeNode("HKEY_CLASSES_ROOT");
foreach (string si in rkRoot.GetSubKeyNames())
{
tRoot.Nodes.Add(si.ToString());
}
TreeNode tUse = new TreeNode("HKEY_CURRENT_USER");
foreach (string si in rkUse.GetSubKeyNames())
{
tUse.Nodes.Add(si.ToString());
}
TreeNode tMachine = new TreeNode("HKEY_LOCAL_MACHINE");
foreach (string si in rkMachine.GetSubKeyNames())
{
tMachine.Nodes.Add(si.ToString());
}
TreeNode tUsers = new TreeNode("HKEY_USERS");
foreach (string si in rkUsers.GetSubKeyNames())
{
tUsers.Nodes.Add(si.ToString());
}
TreeNode tConfig = new TreeNode("HKEY_CURRENT_CONFIG");
foreach (string si in rkConfig.GetSubKeyNames())
{
tConfig.Nodes.Add(si.ToString());
}
this.TVRegedit.Nodes.Add(tRoot);
this.TVRegedit.Nodes.Add(tUse);
this.TVRegedit.Nodes.Add(tMachine);
this.TVRegedit.Nodes.Add(tUsers);
this.TVRegedit.Nodes.Add(tConfig);
}
通过Registry 类的SetValue方法,完成创建子键并为子键创建键值项以及设置键值。代码如下:
private void button1_Click(object sender, EventArgs e)
{
//设默认值
string
keyName=this.label2.Text.Trim().ToString()+""+this.textBox1.
Text.Trim().ToString();
object obj=(object)this.textBox2.Text.Trim();
string strName = this.textBox3.Text.Trim().ToString();
if (strReader != string.Empty)
{
switch (strReader)
{
case "one":
{
Registry.SetValue(keyName, strName, obj,
RegistryValueKind.String);
break;
}
case "four":
{
Registry.SetValue(keyName, strName, obj,
RegistryValueKind.ExpandString);
break;
}
}
this.Banding();
}
else
{
MessageBox.Show("请选择创建方式(例如,字符串型)");
}
}
通过RegistryKey类的GetValue方法,实现键值项与键值的读取。本示例中,在读键值时只取出其中一个值。代码如下:
private void button5_Click(object sender, EventArgs e)
{
string str = this.label2.Text.Trim().ToString();
string defalutResut;
if (str.IndexOf("") != -1)
{
defalutResut = str.Substring(0, str.IndexOf(""));
str = str.Substring(str.IndexOf("") + 1);
}
else
{
defalutResut = str;
}
switch (defalutResut)
{
case "HKEY_CLASSES_ROOT":
{
rkey = Registry.ClassesRoot;
break;
}
case "HKEY_CURRENT_USER":
{
rkey = Registry.CurrentUser;
break;
}
case "HKEY_LOCAL_MACHINE":
{
rkey = Registry.LocalMachine;
break;
}
case "HKEY_USERS":
{
rkey = Registry.Users;
break;
}
case "HKEY_CURRENT_CONFIG":
{
rkey = Registry.CurrentConfig;
break;
}
}
try
{
RegistryKey rkeyS = rkey.OpenSubKey(str);
if (rkeyS.ValueCount>0)