예제 #1
0
        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);
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }