/// <summary>
        ///     Adds a value to the registry key.
        /// </summary>
        /// <param name="hive">Represents the possible values for a top-level node on a foreign machine.</param>
        /// <param name="path">The path to the registry key.</param>
        /// <param name="name">The name of the value.</param>
        /// <param name="value">The value.</param>
        /// <param name="addQuotes">If set to True, adds quotes to the value.</param>
        /// <returns>True on success, else False.</returns>
        public static bool AddRegistryKeyValue(RegistryHive hive, string path, string name, string value,
                                               bool addQuotes = false)
        {
            try
            {
                using (
                    RegistryKey key =
                        RegistryExtensions.OpenBaseKey(hive, RegistryExtensions.RegistryView.Registry64)
                        .OpenWritableSubKeySafe(path))
                {
                    if (key == null)
                    {
                        return(false);
                    }

                    if (addQuotes && !value.StartsWith("\"") && !value.EndsWith("\""))
                    {
                        value = "\"" + value + "\"";
                    }

                    key.SetValue(name, value);
                    return(true);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
 /// <summary>
 ///     Opens a read-only registry key.
 /// </summary>
 /// <param name="hive">Represents the possible values for a top-level node on a foreign machine.</param>
 /// <param name="path">The path to the registry key.</param>
 /// <returns></returns>
 public static RegistryKey OpenReadonlySubKey(RegistryHive hive, string path)
 {
     try
     {
         return(RegistryExtensions.OpenBaseKey(hive, RegistryExtensions.RegistryView.Registry64)
                .OpenSubKey(path, false));
     }
     catch
     {
         return(null);
     }
 }
 /// <summary>
 ///     Deletes the specified value from the registry key.
 /// </summary>
 /// <param name="hive">Represents the possible values for a top-level node on a foreign machine.</param>
 /// <param name="path">The path to the registry key.</param>
 /// <param name="name">The name of the value to delete.</param>
 /// <returns>True on success, else False.</returns>
 public static bool DeleteRegistryKeyValue(RegistryHive hive, string path, string name)
 {
     try
     {
         using (
             RegistryKey key =
                 RegistryExtensions.OpenBaseKey(hive, RegistryExtensions.RegistryView.Registry64)
                 .OpenWritableSubKeySafe(path))
         {
             if (key == null)
             {
                 return(false);
             }
             key.DeleteValue(name, true);
             return(true);
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }