Development Class C#

using System;
using Microsoft.Win32;
class MainClass {
    public static void SearchSubKeys(RegistryKey root, String searchKey) {
        foreach (string keyname in root.GetSubKeyNames()) {
            try {
                using (RegistryKey key = root.OpenSubKey(keyname)) {
                    if (keyname == searchKey) PrintKeyValues(key);
                    SearchSubKeys(key, searchKey);
                }
            } catch (System.Security.SecurityException) {
            }
        }
    }
    public static void PrintKeyValues(RegistryKey key) {
        Console.WriteLine("Registry key found : {0} contains {1} values",
            key.Name, key.ValueCount);
        foreach (string valuename in key.GetValueNames()) {
            if (key.GetValue(valuename) is String) {
                Console.WriteLine(" Value : {0} = {1}",
                    valuename, key.GetValue(valuename));
            }
        }
    }
    public static void Main(String[] args) {
        if (args.Length > 0) {
            using (RegistryKey root = Registry.CurrentUser) {
                SearchSubKeys(root, args[0]);
            }
        }
    }
}