注册表同ini文件一样,存储软件的系统信息以及包含版本等
using
System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
namespace Beasyer.Lib
... {
public static class RegistryKeyHelper
...{
public static RegistryKey OpenOrCreateRegistrKey(RegistryKey rk, string key, bool writable)
...{
RegistryKey rkchild = rk.OpenSubKey(key, writable);
if (rkchild != null)
...{
return rkchild;
}
else
...{
return rk.CreateSubKey(key, writable ? RegistryKeyPermissionCheck.ReadWriteSubTree : RegistryKeyPermissionCheck.ReadSubTree);
}
}
/**//// <summary>
/// 删除rk节点下的所有含key的节点
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
public static void DeleteRegistrKey(RegistryKey rk, string key)
...{
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
if (str == key)
...{
rk.DeleteSubKeyTree(str);
}
else
...{
DeleteRegistrKey(rk.OpenSubKey(str, true), key);
}
}
}
/**//// <summary>
/// 删除rk节点下的所有含key的值
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
public static void DeleteRegistrKeyValues(RegistryKey rk, string key)
...{
rk.DeleteValue(key,false);
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
DeleteRegistrKeyValues(rk.OpenSubKey(str, true), key);
}
}
private static void GetRegistryKeys(RegistryKey rk, string key, ref List<RegistryKey> li)
...{
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
if (str == key)
...{
li.Add(rk.OpenSubKey(str, true));
}
else
...{
GetRegistryKeys(rk.OpenSubKey(str, true), key, ref li);
}
}
}
/**//// <summary>
/// 获取rk节点下的所有含key的节点
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
/// <returns></returns>
public static RegistryKey[] GetRegistryKeys(RegistryKey rk, string key)
...{
List<RegistryKey> li = new List<RegistryKey>();
GetRegistryKeys(rk, key, ref li);
return li.ToArray();
}
/**//// <summary>
/// 更新rk节点下的所有含childRegistryKey子节点的含key的值为value
/// </summary>
/// <param name="rk"></param>
/// <param name="childRegistryKey"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="rvk"></param>
public static void UpdateRegistrKeyValues(RegistryKey rk,string childRegistryKey, string key, object value,RegistryValueKind rvk)
...{
List<RegistryKey> li = new List<RegistryKey>();
GetRegistryKeys(rk, childRegistryKey, ref li);
foreach (RegistryKey rkchild in li)
...{
rkchild.SetValue(key, value, rvk);
}
}
private static void GetCurrentRegistryKeyValues(RegistryKey rk, string key, ref List<string> li)
...{
string[] strr = rk.GetValueNames();
foreach (string str in strr)
...{
if (str == key)
...{
object o=rk.GetValue(str);
li.Add(o == null ? string.Empty : o.ToString());
}
}
}
private static void GetRegistryKeyValues(RegistryKey rk,string key,ref List<string> li)
...{
GetCurrentRegistryKeyValues(rk, key, ref li);
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
GetRegistryKeyValues(rk.OpenSubKey(str, true), key, ref li);
}
}
/**//// <summary>
/// 获取rk节点下的所有含key的值
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string[] GetRegistryKeyValues(RegistryKey rk, string key)
...{
List<string> li = new List<string>();
GetRegistryKeyValues(rk,key);
return li.ToArray();
}
}
}
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
namespace Beasyer.Lib
... {
public static class RegistryKeyHelper
...{
public static RegistryKey OpenOrCreateRegistrKey(RegistryKey rk, string key, bool writable)
...{
RegistryKey rkchild = rk.OpenSubKey(key, writable);
if (rkchild != null)
...{
return rkchild;
}
else
...{
return rk.CreateSubKey(key, writable ? RegistryKeyPermissionCheck.ReadWriteSubTree : RegistryKeyPermissionCheck.ReadSubTree);
}
}
/**//// <summary>
/// 删除rk节点下的所有含key的节点
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
public static void DeleteRegistrKey(RegistryKey rk, string key)
...{
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
if (str == key)
...{
rk.DeleteSubKeyTree(str);
}
else
...{
DeleteRegistrKey(rk.OpenSubKey(str, true), key);
}
}
}
/**//// <summary>
/// 删除rk节点下的所有含key的值
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
public static void DeleteRegistrKeyValues(RegistryKey rk, string key)
...{
rk.DeleteValue(key,false);
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
DeleteRegistrKeyValues(rk.OpenSubKey(str, true), key);
}
}
private static void GetRegistryKeys(RegistryKey rk, string key, ref List<RegistryKey> li)
...{
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
if (str == key)
...{
li.Add(rk.OpenSubKey(str, true));
}
else
...{
GetRegistryKeys(rk.OpenSubKey(str, true), key, ref li);
}
}
}
/**//// <summary>
/// 获取rk节点下的所有含key的节点
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
/// <returns></returns>
public static RegistryKey[] GetRegistryKeys(RegistryKey rk, string key)
...{
List<RegistryKey> li = new List<RegistryKey>();
GetRegistryKeys(rk, key, ref li);
return li.ToArray();
}
/**//// <summary>
/// 更新rk节点下的所有含childRegistryKey子节点的含key的值为value
/// </summary>
/// <param name="rk"></param>
/// <param name="childRegistryKey"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="rvk"></param>
public static void UpdateRegistrKeyValues(RegistryKey rk,string childRegistryKey, string key, object value,RegistryValueKind rvk)
...{
List<RegistryKey> li = new List<RegistryKey>();
GetRegistryKeys(rk, childRegistryKey, ref li);
foreach (RegistryKey rkchild in li)
...{
rkchild.SetValue(key, value, rvk);
}
}
private static void GetCurrentRegistryKeyValues(RegistryKey rk, string key, ref List<string> li)
...{
string[] strr = rk.GetValueNames();
foreach (string str in strr)
...{
if (str == key)
...{
object o=rk.GetValue(str);
li.Add(o == null ? string.Empty : o.ToString());
}
}
}
private static void GetRegistryKeyValues(RegistryKey rk,string key,ref List<string> li)
...{
GetCurrentRegistryKeyValues(rk, key, ref li);
string[] strr = rk.GetSubKeyNames();
foreach (string str in strr)
...{
GetRegistryKeyValues(rk.OpenSubKey(str, true), key, ref li);
}
}
/**//// <summary>
/// 获取rk节点下的所有含key的值
/// </summary>
/// <param name="rk"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string[] GetRegistryKeyValues(RegistryKey rk, string key)
...{
List<string> li = new List<string>();
GetRegistryKeyValues(rk,key);
return li.ToArray();
}
}
}