早上寫了一個簡單的操作註冊表的類。
現在帖出來讓大家幫我看看,有什麼問題請聯絡我。
using System;
using Microsoft.Win32;
namespace PowerComponent
{
/// <summary>
/// 操作註冊表
/// </summary>
public class Register
{
/// <summary>
/// 執行個體建構函式
/// </summary>
public Register()
{
//
// TODO: 在此處添加建構函式邏輯
//
}
#region 公用方法
/// <summary>
/// 寫入註冊表,如果指定項已經存在,則修改指定項的值
/// </summary>
/// <param name="keytype">註冊表基項枚舉</param>
/// <param name="key">登錄機碼,不包括基項</param>
/// <param name="name">值名稱</param>
/// <param name="values">值</param>
/// <returns>返回布爾值,指定操作是否成功</returns>
public bool setValue(PowerComponent.Register.keyType keytype, string key, string name, string values)
{
try
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
RegistryKey rkt = rk.CreateSubKey(key);
if(rkt != null)
rkt.SetValue(name, values);
else
{
throw (new Exception("要寫入的項不存在"));
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 讀取註冊表
/// </summary>
/// <param name="keytype">註冊表基項枚舉</param>
/// <param name="key">登錄機碼,不包括基項</param>
/// <param name="name">值名稱</param>
/// <returns>返回字串</returns>
public string getValue(PowerComponent.Register.keyType keytype, string key, string name)
{
try
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
RegistryKey rkt = rk.OpenSubKey(key);
if(rkt != null)
return rkt.GetValue(name).ToString();
else
throw(new Exception("無法找到指定項"));
}
catch(Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 刪除註冊表中的值
/// </summary>
/// <param name="keytype">註冊表基項枚舉</param>
/// <param name="key">登錄機碼名稱,不包括基項</param>
/// <param name="name">值名稱</param>
/// <returns>返回布爾值,指定操作是否成功</returns>
public bool deleteValue(PowerComponent.Register.keyType keytype, string key, string name)
{
try
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
RegistryKey rkt = rk.OpenSubKey(key,true);
if( rkt != null)
rkt.DeleteValue(name,true);
else
throw(new Exception("無法找到指定項"));
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 刪除註冊表中的指定項
/// </summary>
/// <param name="keytype">註冊表基項枚舉</param>
/// <param name="key">註冊表中的項,不包括基項</param>
/// <returns>返回布爾值,指定操作是否成功</returns>
public bool deleteSubKey(PowerComponent.Register.keyType keytype, string key)
{
try
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
rk.DeleteSubKeyTree(key);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 判斷指定項是否存在
/// </summary>
/// <param name="keytype">基項枚舉</param>
/// <param name="key">指定項字串</param>
/// <returns>返回布爾值,說明指定項是否存在</returns>
public bool isExist(PowerComponent.Register.keyType keytype, string key)
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
if(rk.OpenSubKey(key) == null)
return false;
else
return true;
}
/// <summary>
/// 檢索指定項關聯的所有值
/// </summary>
/// <param name="keytype">基項枚舉</param>
/// <param name="key">指定項字串</param>
/// <returns>返回指定項關聯的所有值的字串數組</returns>
public string[] getValues(PowerComponent.Register.keyType keytype, string key)
{
RegistryKey rk = (RegistryKey)getRegistryKey(keytype);
RegistryKey rkt = rk.OpenSubKey(key);
if(rkt != null)
{
string[] names = rkt.GetValueNames();
if(names.Length == 0)
return names;
else
{
string[] values = new string[names.Length];
int i = 0;
foreach(string name in names)
{
values[i] = rkt.GetValue(name).ToString();
i++;
}
return values;
}
}
else
{
throw (new Exception("指定項不存在"));
}
}
#endregion
#region 私人方法
/// <summary>
/// 返回RegistryKey對象
/// </summary>
/// <param name="keytype">註冊表基項枚舉</param>
/// <returns></returns>
private object getRegistryKey(PowerComponent.Register.keyType keytype)
{
RegistryKey rk = null;
switch(keytype)
{
case keyType.HKEY_CLASS_ROOT:
rk = Registry.ClassesRoot;
break;
case keyType.HKEY_CURRENT_USER:
rk = Registry.CurrentUser;
break;
case keyType.HKEY_LOCAL_MACHINE:
rk = Registry.LocalMachine;
break;
case keyType.HKEY_USERS:
rk = Registry.Users;
break;
case keyType.HKEY_CURRENT_CONFIG:
rk = Registry.CurrentConfig;
break;
}
return rk;
}
#endregion
#region 枚舉
/// <summary>
/// 註冊表基項枚舉
/// </summary>
public enum keyType:int
{
/// <summary>
/// 註冊表基項 HKEY_CLASSES_ROOT
/// </summary>
HKEY_CLASS_ROOT,
/// <summary>
/// 註冊表基項 HKEY_CURRENT_USER
/// </summary>
HKEY_CURRENT_USER ,
/// <summary>
/// 註冊表基項 HKEY_LOCAL_MACHINE
/// </summary>
HKEY_LOCAL_MACHINE ,
/// <summary>
/// 註冊表基項 HKEY_USERS
/// </summary>
HKEY_USERS ,
/// <summary>
/// 註冊表基項 HKEY_CURRENT_CONFIG
/// </summary>
HKEY_CURRENT_CONFIG
}
#endregion
}
}