/// <summary> /// 注冊表基項靜態域 /// /// 主要包括: /// 1.Registry.ClassesRoot 對應于HKEY_CLASSES_ROOT主鍵 /// 2.Registry.CurrentUser 對應于HKEY_CURRENT_USER主鍵 /// 3.Registry.LocalMachine 對應于 HKEY_LOCAL_MACHINE主鍵 /// 4.Registry.User 對應于 HKEY_USER主鍵 /// 5.Registry.CurrentConfig 對應于HEKY_CURRENT_CONFIG主鍵 /// 6.Registry.DynDa 對應于HKEY_DYN_DATA主鍵 /// 7.Registry.PerformanceData 對應于HKEY_PERFORMANCE_DATA主鍵 /// /// 版本:1.0 /// </summary> public enum RegDomain { /// <summary> /// 對應于HKEY_CLASSES_ROOT主鍵 /// </summary> ClassesRoot = 0, /// <summary> /// 對應于HKEY_CURRENT_USER主鍵 /// </summary> CurrentUser = 1, /// <summary> /// 對應于 HKEY_LOCAL_MACHINE主鍵 /// </summary> LocalMachine = 2, /// <summary> /// 對應于 HKEY_USER主鍵 /// </summary> User = 3, /// <summary> /// 對應于HEKY_CURRENT_CONFIG主鍵 /// </summary> CurrentConfig = 4, /// <summary> /// 對應于HKEY_DYN_DATA主鍵 /// </summary> DynDa = 5, /// <summary> /// 對應于HKEY_PERFORMANCE_DATA主鍵 /// </summary> PerformanceData = 6, }
/// <summary> /// 指定在注冊表中存儲值時所用的數據類型,或標識注冊表中某個值的數據類型 /// /// 主要包括: /// 1.RegistryValueKind.Unknown /// 2.RegistryValueKind.String /// 3.RegistryValueKind.ExpandString /// 4.RegistryValueKind.Binary /// 5.RegistryValueKind.DWord /// 6.RegistryValueKind.MultiString /// 7.RegistryValueKind.QWord /// /// 版本:1.0 /// </summary> public enum RegValueKind { /// <summary> /// 指示一個不受支持的注冊表數據類型。例如,不支持 Microsoft Win32 API 注冊表數據類型 REG_RESOURCE_LIST。使用此值指定 /// </summary> Unknown = 0, /// <summary> /// 指定一個以 Null 結尾的字符串。此值與 Win32 API 注冊表數據類型 REG_SZ 等效。 /// </summary> String = 1, /// <summary> /// 指定一個以 NULL 結尾的字符串,該字符串中包含對環境變量(如 %PATH%,當值被檢索時,就會展開)的未展開的引用。 /// 此值與 Win32 API注冊表數據類型 REG_EXPAND_SZ 等效。 /// </summary> ExpandString = 2, /// <summary> /// 指定任意格式的二進制數據。此值與 Win32 API 注冊表數據類型 REG_BINARY 等效。 /// </summary> Binary = 3, /// <summary> /// 指定一個 32 位二進制數。此值與 Win32 API 注冊表數據類型 REG_DWORD 等效。 /// </summary> DWord = 4, /// <summary> /// 指定一個以 NULL 結尾的字符串數組,以兩個空字符結束。此值與 Win32 API 注冊表數據類型 REG_MULTI_SZ 等效。 /// </summary> MultiString = 5, /// <summary> /// 指定一個 64 位二進制數。此值與 Win32 API 注冊表數據類型 REG_QWORD 等效。 /// </summary> QWord = 6, }
/// <summary> /// 注冊表操作類 /// /// 主要包括以下操作: /// 1.創建注冊表項 /// 2.讀取注冊表項 /// 3.判斷注冊表項是否存在 /// 4.刪除注冊表項 /// 5.創建注冊表鍵值 /// 6.讀取注冊表鍵值 /// 7.判斷注冊表鍵值是否存在 /// 8.刪除注冊表鍵值 /// /// 版本:1.0 /// </summary> public class Register { #region 字段定義 /// <summary> /// 注冊表項名稱 /// </summary> PRivate string _subkey; /// <summary> /// 注冊表基項域 /// </summary> private RegDomain _domain; /// <summary> /// 注冊表鍵值 /// </summary> private string _regeditkey; #endregion
#region 屬性 /// <summary> /// 設置注冊表項名稱 /// </summary> public string SubKey { //get { return _subkey; } set { _subkey = value; } }
/// <summary> /// 注冊表基項域 /// </summary> public RegDomain Domain { ///get { return _domain; } set { _domain = value; } }
/// <summary> /// 注冊表鍵值 /// </summary> public string RegeditKey { ///get{return _regeditkey;} set { _regeditkey = value; } } #endregion
#region 構造函數 public Register() { ///默認注冊表項名稱 _subkey = "software//"; ///默認注冊表基項域 _domain = RegDomain.LocalMachine; }
/// <summary> /// 構造函數 /// </summary> /// <param name="subKey">注冊表項名稱</param> /// <param name="regDomain">注冊表基項域</param> public Register(string subKey, RegDomain regDomain) { ///設置注冊表項名稱 _subkey = subKey; ///設置注冊表基項域 _domain = regDomain; } #endregion
#region 公有方法 #region 創建注冊表項 /// <summary> /// 創建注冊表項,默認創建在注冊表基項 HKEY_LOCAL_MACHINE下面(請先設置SubKey屬性) /// 虛方法,子類可進行重寫 /// </summary> public virtual void CreateSubKey() { ///判斷注冊表項名稱是否為空,如果為空,返回false if (_subkey == string.Empty || _subkey == null) { return; }
///創建基于注冊表基項的節點 RegistryKey key = GetRegDomain(_domain);
///要創建的注冊表項的節點 RegistryKey sKey; if (!IsSubKeyExist()) { sKey = key.CreateSubKey(_subkey); } //sKey.Close(); ///關閉對注冊表項的更改 key.Close(); }
/// <summary> /// 創建注冊表項,默認創建在注冊表基項 HKEY_LOCAL_MACHINE下面 /// 虛方法,子類可進行重寫 /// 例子:如subkey是software//higame//,則將創建HKEY_LOCAL_MACHINE//software//higame//注冊表項 /// </summary> /// <param name="subKey">注冊表項名稱</param> public virtual void CreateSubKey(string subKey) { ///判斷注冊表項名稱是否為空,如果為空,返回false if (subKey == string.Empty || subKey == null) { return; }
///創建基于注冊表基項的節點 RegistryKey key = GetRegDomain(_domain);
///要創建的注冊表項的節點 RegistryKey sKey; if (!IsSubKeyExist(subKey)) { sKey = key.CreateSubKey(subKey); } //sKey.Close(); ///關閉對注冊表項的更改 key.Close(); }
/// <summary> /// 創建注冊表項,默認創建在注冊表基項 HKEY_LOCAL_MACHINE下面 /// 虛方法,子類可進行重寫 /// </summary> /// <param name="regDomain">注冊表基項域</param> public virtual void CreateSubKey(RegDomain regDomain) { ///判斷注冊表項名稱是否為空,如果為空,返回false if (_subkey == string.Empty || _subkey == null) { return; }
///創建基于注冊表基項的節點 RegistryKey key = GetRegDomain(regDomain);
///要創建的注冊表項的節點 RegistryKey sKey; if (!IsSubKeyExist(regDomain)) { sKey = key.CreateSubKey(_subkey); } //sKey.Close(); ///關閉對注冊表項的更改 key.Close(); }
/// <summary> /// 創建注冊表項(請先設置SubKey屬性) /// 虛方法,子類可進行重寫 /// 例子:如regDomain是HKEY_LOCAL_MACHINE,subkey是software//higame//,則將創建HKEY_LOCAL_MACHINE//software//higame//注冊表項 /// </summary> /// <param name="subKey">注冊表項名稱</param> /// <param name="regDomain">注冊表基項域</param> public virtual void CreateSubKey(string subKey, RegDomain regDomain) { ///判斷注冊表項名稱是否為空,如果為空,返回false if (subKey == string.Empty || subKey == null) { return; }
///創建基于注冊表基項的節點 RegistryKey key = GetRegDomain(regDomain);
///要創建的注冊表項的節點 RegistryKey sKey; if (!IsSubKeyExist(subKey, regDomain)) { sKey = key.CreateSubKey(subKey); } //sKey.Close(); ///關閉對注冊表項的更改 key.Close(); } #endregion
#region 判斷注冊表項是否存在 /// <summary> /// 判斷注冊表項是否存在,默認是在注冊表基項HKEY_LOCAL_MACHINE下判斷(請先設置SubKey屬性) /// 虛方法,子
新聞熱點
疑難解答