internal IEnumerable <RegisteredProgram> GetRegisteredPrograms() { // Make sure we only fill this list 1 time since it might take a while filling this list if (_registeredPrograms == null) { _registeredPrograms = RegisteredProgram.GetRegisteredPrograms(); } return(_registeredPrograms); }
public static IEnumerable<RegisteredProgram> GetRegisteredPrograms() { List<RegisteredProgram> result = new List<RegisteredProgram>(); using (RegistryKey regkey = Registry.LocalMachine.OpenSubKey(@"Software\RegisteredApplications")) { if (regkey != null) { foreach (string productname in regkey.GetValueNames()) { string capabilitieskey = regkey.GetValue(productname) as string; if (string.IsNullOrEmpty(capabilitieskey)) continue; capabilitieskey = capabilitieskey.TrimEnd('\\') + '\\'; RegisteredProgram regprog = new RegisteredProgram(productname); result.Add(regprog); string[] capabilitytypes = new string[] { "FileAssociations", "MimeAssociations", "URLAssociations", "StartMenu" }; foreach (string capabilitytype in capabilitytypes) { using (RegistryKey extregkey = Registry.LocalMachine.OpenSubKey(capabilitieskey + capabilitytype)) { if (extregkey == null) continue; foreach (string valuename in extregkey.GetValueNames()) { string value = extregkey.GetValue(valuename) as string; if (string.IsNullOrEmpty(value)) continue; switch (capabilitytype) { case "FileAssociations": { regprog._extensions.Add("." + valuename.TrimStart('.'), value); break; } case "MimeAssociations": { regprog._mimes.Add(valuename, value); break; } case "URLAssociations": { // TODO: Include these when URL is implemented // regprog._urls.Add(valuename, value); break; } case "StartMenu": { // TODO: Include these when StartMenu is implemented // regprog._startmenus.Add(valuename, value); break; } } } } } } } } return result; }
public static IEnumerable <RegisteredProgram> GetRegisteredPrograms() { List <RegisteredProgram> result = new List <RegisteredProgram>(); using (RegistryKey regkey = Registry.LocalMachine.OpenSubKey(@"Software\RegisteredApplications")) { if (regkey != null) { foreach (string productname in regkey.GetValueNames()) { string capabilitieskey = regkey.GetValue(productname) as string; if (string.IsNullOrEmpty(capabilitieskey)) { continue; } capabilitieskey = capabilitieskey.TrimEnd('\\') + '\\'; RegisteredProgram regprog = new RegisteredProgram(productname); result.Add(regprog); string[] capabilitytypes = new string[] { "FileAssociations", "MimeAssociations", "URLAssociations", "StartMenu" }; foreach (string capabilitytype in capabilitytypes) { using (RegistryKey extregkey = Registry.LocalMachine.OpenSubKey(capabilitieskey + capabilitytype)) { if (extregkey == null) { continue; } foreach (string valuename in extregkey.GetValueNames()) { string value = extregkey.GetValue(valuename) as string; if (string.IsNullOrEmpty(value)) { continue; } switch (capabilitytype) { case "FileAssociations": { regprog._extensions.Add("." + valuename.TrimStart('.'), value); break; } case "MimeAssociations": { regprog._mimes.Add(valuename, value); break; } case "URLAssociations": { // TODO: Include these when URL is implemented // regprog._urls.Add(valuename, value); break; } case "StartMenu": { // TODO: Include these when StartMenu is implemented // regprog._startmenus.Add(valuename, value); break; } } } } } } } } return(result); }