/// <summary> /// Delete registry value or key. If key is specified, it is deleted recursively. /// </summary> /// <param name="keyAndValue">Key or value name (key ends with \ or /)</param> public static void RegistryDelete(string keyAndValue) { using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { try { if (string.IsNullOrEmpty(rn.ValueName)) { rn.DeleteTree(); } else { using (var rk = rn.Open(true)) { if (rk != null) { rk.DeleteValue(rn.ValueName); } } } } catch (ArgumentException) { } catch (FileNotFoundException) { } } }
/// List all subkeys of a specific key public static string[] RegistryGetSubkeyNames(string keyAndValue) { if (keyAndValue == null) { throw new ArgumentNullException("keyAndValue"); } var s = keyAndValue.Trim(); if (s.Length > 0 && (s[s.Length - 1] != '\\' && s[s.Length - 1] != '/')) { s += "\\"; } using (RegW64Helper rn = new RegW64Helper(s)) { using (var rk = rn.Open(false)) { if (rk == null) { return(null); } return(rk.GetSubKeyNames()); } } }
/// Get registry value, or return default value with support for 32 and 64 bit registries public static object RegistryGet(string keyAndValue, object def, RegistryValueOptions options) { if (keyAndValue == null) throw new ArgumentNullException("keyAndValue"); using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { using (var rk = rn.Open(false)) { if (rk == null) return def; return rk.GetValue(rn.ValueName, def, options); } } }
/// Get registry value, or return default value with support for 32 and 64 bit registries public static object RegistryGet(string keyAndValue, object def, RegistryValueOptions options) { if (keyAndValue == null) { throw new ArgumentNullException("keyAndValue"); } using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { using (var rk = rn.Open(false)) { if (rk == null) { return(def); } return(rk.GetValue(rn.ValueName, def, options)); } } }
/// <summary> /// Delete registry value or key. If key is specified, it is deleted recursively. /// </summary> /// <param name="keyAndValue">Key or value name (key ends with \ or /)</param> public static void RegistryDelete(string keyAndValue) { using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { try { if (string.IsNullOrEmpty(rn.ValueName)) rn.DeleteTree(); else using (var rk = rn.Open(true)) { if (rk != null) rk.DeleteValue(rn.ValueName); } } catch (ArgumentException) { } catch (FileNotFoundException) { } } }
/// <summary> /// Set registry value, creating the key if neccesary. With support for 32 and 64 bit registries /// </summary> /// <param name="keyAndValue">Key name in format [\\machineName]RootKey[:32|:64]\subkey\value</param> /// <param name="value">Value to set</param> /// <param name="kind">Registry value kind</param> /// <returns>previous value, or null if didn't exist</returns> public static object RegistrySet(string keyAndValue, object value, Microsoft.Win32.RegistryValueKind kind) { if (keyAndValue == null) { throw new ArgumentNullException("keyAndValue"); } object ret = RegistryGet(keyAndValue, null); using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { using (var rk = rn.Create(RegistryKeyPermissionCheck.Default)) { if (value == null) { rk.DeleteValue(rn.ValueName, false); } else { rk.SetValue(rn.ValueName, value, kind); } } } return(ret); }
/// List all subkeys of a specific key public static string[] RegistryGetSubkeyNames(string keyAndValue) { if (keyAndValue == null) throw new ArgumentNullException("keyAndValue"); var s = keyAndValue.Trim(); if (s.Length > 0 && (s[s.Length - 1] != '\\' && s[s.Length - 1] != '/')) s += "\\"; using (RegW64Helper rn = new RegW64Helper(s)) { using (var rk = rn.Open(false)) { if (rk == null) return null; return rk.GetSubKeyNames(); } } }
/// <summary> /// Set registry value, creating the key if neccesary. With support for 32 and 64 bit registries /// </summary> /// <param name="keyAndValue">Key name in format [\\machineName]RootKey[:32|:64]\subkey\value</param> /// <param name="value">Value to set</param> /// <param name="kind">Registry value kind</param> /// <returns>previous value, or null if didn't exist</returns> public static object RegistrySet(string keyAndValue, object value, Microsoft.Win32.RegistryValueKind kind) { if (keyAndValue == null) throw new ArgumentNullException("keyAndValue"); object ret = RegistryGet(keyAndValue, null); using (RegW64Helper rn = new RegW64Helper(keyAndValue)) { using (var rk=rn.Create(RegistryKeyPermissionCheck.Default)) { if (value == null) rk.DeleteValue(rn.ValueName,false); else rk.SetValue(rn.ValueName,value,kind); } } return ret; }