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]);
}
}
}
}