Simple Registry Editor Class


a very simple class
     to read, write, delete and count
        registry values with C#

using System;
// it's required for reading/writing into the registry:
using Microsoft.Win32;     
// and for the MessageBox function:
using System.Windows.Forms;
namespace Utility.ModifyRegistry
{
 /// <summary>
 /// An useful class to read/write/delete/count registry keys
 /// </summary>
 public class ModifyRegistry
 {
  private bool showError = false;
  /// <summary>
  /// A property to show or hide error messages
  /// (default = false)
  /// </summary>
  public bool ShowError
  {
   get { return showError; }
   set { showError = value; }
  }
  private string subKey = "SOFTWARE\\" + Application.ProductName.ToUpper();
  /// <summary>
  /// A property to set the SubKey value
  /// (default = "SOFTWARE\\" + Application.ProductName.ToUpper())
  /// </summary>
  public string SubKey
  {
   get { return subKey; }
   set { subKey = value; }
  }
  private RegistryKey baseRegistryKey = Registry.LocalMachine;
  /// <summary>
  /// A property to set the BaseRegistryKey value.
  /// (default = Registry.LocalMachine)
  /// </summary>
  public RegistryKey BaseRegistryKey
  {
   get { return baseRegistryKey; }
   set { baseRegistryKey = value; }
  }

  /// <summary>
  /// To read a registry key.
  /// input: KeyName (string)
  /// output: value (string)
  /// </summary>
  public string Read(string KeyName)
  {
   // Opening the registry key
   RegistryKey rk = baseRegistryKey ;
   // Open a subKey as read-only
   RegistryKey sk1 = rk.OpenSubKey(subKey);
   // If the RegistrySubKey doesn't exist -> (null)
   if ( sk1 == null )
   {
    return null;
   }
   else
   {
    try
    {
     // If the RegistryKey exists I get its value
     // or null is returned.
     return (string)sk1.GetValue(KeyName.ToUpper());
    }
    catch (Exception e)
    {
     // AAAAAAAAAAARGH, an error!
     ShowErrorMessage(e, "Reading registry " + KeyName.ToUpper());
     return null;
    }
   }
  }

  /// <summary>
  /// To write into a registry key.
  /// input: KeyName (string) , Value (object)
  /// output: true or false
  /// </summary>
  public bool Write(string KeyName, object Value)
  {
   try
   {
    // Setting
    RegistryKey rk = baseRegistryKey ;
    // I have to use CreateSubKey
    // (create or open it if already exits),
    // 'cause OpenSubKey open a subKey as read-only
    RegistryKey sk1 = rk.CreateSubKey(subKey);
    // Save the value
    sk1.SetValue(KeyName.ToUpper(), Value);
    return true;
   }
   catch (Exception e)
   {
    // AAAAAAAAAAARGH, an error!
    ShowErrorMessage(e, "Writing registry " + KeyName.ToUpper());
    return false;
   }
  }
  /// <summary>
  /// To delete a registry key.
  /// input: KeyName (string)
  /// output: true or false
  /// </summary>
  public bool DeleteKey(string KeyName)
  {
   try
   {
    // Setting
    RegistryKey rk = baseRegistryKey ;
    RegistryKey sk1 = rk.CreateSubKey(subKey);
    // If the RegistrySubKey doesn't exists -> (true)
    if ( sk1 == null )
     return true;
    else
     sk1.DeleteValue(KeyName);
    return true;
   }
   catch (Exception e)
   {
    // AAAAAAAAAAARGH, an error!
    ShowErrorMessage(e, "Deleting SubKey " + subKey);
    return false;
   }
  }
  /// <summary>
  /// To delete a sub key and any child.
  /// input: void
  /// output: true or false
  /// </summary>
  public bool DeleteSubKeyTree()
  {
   try
   {
    // Setting
    RegistryKey rk = baseRegistryKey ;
    RegistryKey sk1 = rk.OpenSubKey(subKey);
    // If the RegistryKey exists, I delete it
    if ( sk1 != null )
     rk.DeleteSubKeyTree(subKey);
    return true;
   }
   catch (Exception e)
   {
    // AAAAAAAAAAARGH, an error!
    ShowErrorMessage(e, "Deleting SubKey " + subKey);
    return false;
   }
  }
  /// <summary>
  /// Retrive the count of subkeys at the current key.
  /// input: void
  /// output: number of subkeys
  /// </summary>
  public int SubKeyCount()
  {
   try
   {
    // Setting
    RegistryKey rk = baseRegistryKey ;
    RegistryKey sk1 = rk.OpenSubKey(subKey);
    // If the RegistryKey exists...
    if ( sk1 != null )
     return sk1.SubKeyCount;
    else
     return 0;
   }
   catch (Exception e)
   {
    // AAAAAAAAAAARGH, an error!
    ShowErrorMessage(e, "Retriving subkeys of " + subKey);
    return 0;
   }
  }

  /// <summary>
  /// Retrive the count of values in the key.
  /// input: void
  /// output: number of keys
  /// </summary>
  public int ValueCount()
  {
   try
   {
    // Setting
    RegistryKey rk = baseRegistryKey ;
    RegistryKey sk1 = rk.OpenSubKey(subKey);
    // If the RegistryKey exists...
    if ( sk1 != null )
     return sk1.ValueCount;
    else
     return 0;
   }
   catch (Exception e)
   {
    // AAAAAAAAAAARGH, an error!
    ShowErrorMessage(e, "Retriving keys of " + subKey);
    return 0;
   }
  }

  private void ShowErrorMessage(Exception e, string Title)
  {
   if (showError == true)
    MessageBox.Show(e.Message,
        Title
        ,MessageBoxButtons.OK
        ,MessageBoxIcon.Error);
  }
 }
}






Enjoy !!!
Don't forget to put your comments here.

Comments

Popular posts from this blog

How to use PROXY to download all OEM apps.

How to make free license Applications and Games on Windows Phone 8.1

Internet Download Manager [LZ] Pro WP8.1 Patched Xap