public static IEnumerable <T> RetrieveAllRegistrySubkeyValues <T>(RegistryKey registryKey, string subkeyName) { List <T> list = new List <T>(); RegistryKey registryKey1 = RegistryHelper.OpenSubkey(registryKey, subkeyName, false); if (registryKey1 != null) { using (registryKey1) { foreach (RegistryKey registryKey2 in RegistryHelper.GetSubkeys(registryKey1)) { RegistryKey subSubkey = registryKey2; using (subSubkey) { string[] registryValueNames = (string[])null; if (RegistryHelper.RegistryExceptionWrapper((Action)(() => registryValueNames = subSubkey.GetValueNames())) == null) { foreach (string valueName in registryValueNames) { object source = RegistryHelper.RetrieveRegistryValue <object>(subSubkey, valueName); if (source != null) { T obj = TypeHelper.ConvertType <T>(source); list.Add(obj); } } } } } } } return((IEnumerable <T>)list); }
public static IEnumerable <RegistryKey> GetSubkeys(RegistryKey registryKey, string subkeyName) { RegistryKey registrySubkey = RegistryHelper.OpenSubkey(registryKey, subkeyName, false); if (registrySubkey != null) { using (registrySubkey) { foreach (RegistryKey registryKey1 in RegistryHelper.GetSubkeys(registrySubkey)) { yield return(registryKey1); } } } }