#region 打开注册表LocalMachine项的SOFTWARE
/// <summary>
/// 打开注册表LocalMachine项的SOFTWARE
/// </summary>
/// <param name="pathname">项下子项</param>
/// <param name="Xname">项名称</param>
/// <param name="KeyName">键值名称</param>
/// <param name="KeyValue">键值</param>
/// <param name="error">错误信息</param>
/// <returns></returns>
public bool OpenRegedit(string pathname, string Xname, string KeyName, string KeyValue, ref string error)
{
try
{
//获取Machine根项
RegistryKey machine = Registry.LocalMachine;
//打开SOFTWARE项
RegistryKey software = machine.OpenSubKey("SOFTWARE", true);
//新项MyApplication项
RegistryKey myApplication = software.CreateSubKey(Xname);
RegistryKey subkey = myApplication.CreateSubKey(pathname);
//新建键值,当键值名称为空时,将被设置为默认值
//subkey.SetValue(null, Application.StartupPath);
//subkey.SetValue(KeyName, Application.UserAppDataPath);
subkey.SetValue(KeyName, KeyValue);
return true;
}
catch (Exception aa)
{
error = aa.ToString();
return false;
}
}
#endregion
#region 设置开机启动项
/// <summary>
/// 设置开机启动项
/// </summary>
/// <param name="name">启动项名称</param>
/// <param name="path">启动项exe路径</param>
/// <param name="error">错误信息</param>
/// <returns></returns>
public bool SetKjqdx(string name, string path, ref string error)
{
try
{
//打开注册表子项
RegistryKey key = Registry.LocalMachine
.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
//增加开机启动项
key.SetValue(name, path);
return true;
}
catch (Exception aa)
{
error = aa.ToString();
return false;
}
}
#endregion
#region 创建注册表项
/// <summary>
/// 创建注册表项
/// </summary>
/// <param name="keyname"></param>
/// <returns></returns>
public bool AddRegedit(string pathname)
{
try
{
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.CreateSubKey("software\\" + pathname);
key.Close();
return true;
}
catch (Exception aa)
{
//MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
#endregion
#region 删除注册表项
/// <summary>
///
/// </summary>
/// <param name="keyname"></param>
/// <returns></returns>
public bool DeleteRegedit(string pathname)
{
try
{
RegistryKey key = Registry.LocalMachine;
key.DeleteSubKey("software\\" + pathname, true); //该方法无返回值,直接调用即可
key.Close();
return true;
}
catch (Exception aa)
{
//MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
//throw;
}
}
#endregion
#region 设置注册表键值
public bool EditRegedit(string pathname, string keyname, string keyvalue)
{
try
{
RegistryKey key = Registry.LocalMachine;
if(!IsRegeditItemExist(pathname))
{
AddRegedit(pathname);
}
RegistryKey software = key.OpenSubKey("software\\"+ pathname, true); //该项必须已存在
software.SetValue(keyname, keyvalue);
software.Close();
return true;
}
catch (Exception aa)
{
// MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
//throw;
}
}
#endregion
#region 读取注册表键值
/// <summary>
///
/// </summary>
/// <param name="keyname"></param>
/// <param name="keyvalue">返回value</param>
/// <returns></returns>
public bool ReadRegedit(string keyname,string pathname, ref string keyvalue)
{
try
{
if(!IsRegeditKeyExit( pathname, keyname))
{
return false;
}
string info = "";
RegistryKey Key, myreg;
Key = Registry.LocalMachine;
myreg = Key.OpenSubKey("software\\"+ pathname);
// myreg = Key.OpenSubKey("software\\test",true);
info = myreg.GetValue(keyname).ToString();
keyvalue = info;
myreg.Close();
return true;
}
catch (Exception aa)
{
//MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
//throw;
}
}
#endregion
#region 判断注册表项是否存在
/// <summary>
/// 判断注册表项是否存在
/// </summary>
/// <param name="kename">键值名称</param>
/// <returns></returns>
public bool IsRegeditItemExist(string kename)
{
try
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE\\");
//RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
subkeyNames = software.GetSubKeyNames();
//取得该项下所有子项的名称的序列,并传递给预定的数组中
foreach (string keyName in subkeyNames) //遍历整个数组
{
if (keyName == kename) //判断子项的名称
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
catch (Exception aa)
{
// MessageBox.Show(aa.ToString(), "错误提示",MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
#endregion
#region 判断键值是否存在
/// <summary>
/// 判断键值是否存在
/// </summary>
/// <param name="keyname"></param>
/// <returns></returns>
public bool IsRegeditKeyExit(string pathname,string keyname)
{
try
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE\\"+ pathname);
//RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test", true);
subkeyNames = software.GetValueNames();
//取得该项下所有键值的名称的序列,并传递给预定的数组中
foreach (string keyName in subkeyNames)
{
if (keyName == keyname) //判断键值的名称
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
catch (Exception aa)
{
//MessageBox.Show(aa.ToString(), "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
#endregion