Here ya go. Paste this code into a class and you're all set:
using System;
using System.Linq;
using Microsoft.Win32;
using System.Collections.Generic;
namespace Marois.Common.RegistryProcedures
{
public static class RegistryProcedures
{
#region enum BaseKeys
public enum BaseKey
{
HKEY_CLASSES_ROOT,
HKEY_CURRENT_CONFIG,
HKEY_CURRENT_USER,
HKEY_DYN_DATA,
HKEY_LOCAL_MACHINE,
HKEY_PERFORMANCE_DATA
}
#endregion
#region Method CreateSubkey
public static void CreateSubkey(BaseKey BaseKey, string KeyToAdd)
{
CreateSubkey(BaseKey, "", KeyToAdd);
}
public static void CreateSubkey(BaseKey BaseKey, string SubKey, string KeyToAdd)
{
RegistryKey baseKey;
if (SubKey != "")
baseKey = \_GetRegistryBaseKey(BaseKey).OpenSubKey(SubKey, true);
else
baseKey = \_GetRegistryBaseKey(BaseKey);
if (baseKey == null && SubKey != "")
{
throw new Exception("Registry subkey not found");
}
else
{
baseKey.CreateSubKey(KeyToAdd);
}
}
#endregion
#region Method DeleteSubkey
public static void DeleteSubkey(BaseKey BaseKey, string SubKey)
{
RegistryKey baseKey = \_GetRegistryBaseKey(BaseKey);
baseKey.DeleteSubKey(SubKey);
}
#endregion
#region Method DeleteSubkeyTree
public static void DeleteSubKeyTree(BaseKey BaseKey, string sSubKey)
{
RegistryKey baseKey = \_GetRegistryBaseKey(BaseKey);
baseKey.DeleteSubKeyTree(sSubKey);
}
#endregion
#region Method DeleteSubkeyTreeValues
public static void DeleteSubkeyTreeValues(BaseKey BaseKey, string sSubKey)
{
List<string> nodeNames = GetSubKeyNodeNames(BaseKey, sSubKey);
if(nodeNames.Count > 0)
{
RegistryKey baseKey = \_GetRegistryBaseKey(BaseKey);
baseKey = baseKey.OpenSubKey(sSubKey, true);
foreach(string nodeName in nodeNames)
{
baseKey.DeleteValue(nodeName);
}
}
}
#endregion
#region Method DeleteValue