Ejemplo n.º 1
0
    public override bool Equals(object obj)
    {
        if (!(obj is MyStruct))
        {
            return(false);
        }

        RegistryApp ra = (RegistryApp)obj;

        return(ra.VendorName == this.VendorName &&
               ra.Name == this.Name &&
               ra.Version == this.Version);
    }
        /// <summary>
        /// Obtain a complete detailed list of Installed Applications by consulting with the
        /// system registry.
        /// </summary>
        /// <returns>List of RegistryApps Structs</returns>
        public List<RegistryApp> GetAllInstalledApplicationDetails()
        {
            RegistryApp regApp;
            var listOfAllAppsInstalled = new List<RegistryApp>();
            string[] registryValuesToRead = { "Publisher", "DisplayName", "DisplayVersion", "InstallDate" };

            if (Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "x86" && Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432") == null)
            {
                ///////////////////////////////////////////////////////////
                // 32BIT SYSTEM                                          //
                ///////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(RegX86Apps32, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                            case "Publisher":
                                regApp.VendorName = entry.Value;
                                break;
                            case "DisplayName":
                                regApp.Name = entry.Value;
                                break;
                            case "DisplayVersion":
                                regApp.Version = entry.Value;
                                break;
                            case "InstallDate":
                                regApp.Date = entry.Value;
                                break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }
            }
            else
            {
                //////////////////////////////////////////////////////////
                // 64BIT SYSTEM (Made up of 32bit Apps, and 64bit Apps) //
                //////////////////////////////////////////////////////////

                //Get value from dictionary and store in listOfAllAppsInstalled
                ////////////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(Regx64Apps64, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                            case "Publisher":
                                regApp.VendorName = entry.Value;
                                break;
                            case "DisplayName":
                                regApp.Name = entry.Value;
                                break;
                            case "DisplayVersion":
                                regApp.Version = entry.Value;
                                break;
                            case "InstallDate":
                                regApp.Date = entry.Value;
                                break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }

                //Get value from dictionary and store in listOfAllAppsInstalled
                ////////////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(Regx64Apps32, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                            case "Publisher":
                                regApp.VendorName = entry.Value;
                                break;
                            case "DisplayName":
                                regApp.Name = entry.Value;
                                break;
                            case "DisplayVersion":
                                regApp.Version = entry.Value;
                                break;
                            case "InstallDate":
                                regApp.Date = entry.Value;
                                break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }
            }

            //Get all unique entries, no duplicates! Pleasee no duplicates...
            /////////////////////////////////////////////////////////////////
            var parsedList = new List<RegistryApp>();
            parsedList.AddRange(listOfAllAppsInstalled.Where(regitem => (regitem.Name != null) && (regitem.Name.Length > 1) && (regitem.Name != "")));
            listOfAllAppsInstalled.Clear();
            listOfAllAppsInstalled = parsedList.OrderBy(x => x.Date).ToList();

            return listOfAllAppsInstalled;
        }
        /// <summary>
        /// Obtain a complete detailed list of Installed Applications by consulting with the
        /// system registry.
        /// </summary>
        /// <returns>List of RegistryApps Structs</returns>
        public List <RegistryApp> GetAllInstalledApplicationDetails()
        {
            RegistryApp regApp;
            var         listOfAllAppsInstalled = new List <RegistryApp>();

            string[] registryValuesToRead = { "Publisher", "DisplayName", "DisplayVersion", "InstallDate" };

            if (Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "x86" && Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432") == null)
            {
                ///////////////////////////////////////////////////////////
                // 32BIT SYSTEM                                          //
                ///////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(RegX86Apps32, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                        case "Publisher":
                            regApp.VendorName = entry.Value;
                            break;

                        case "DisplayName":
                            regApp.Name = entry.Value;
                            break;

                        case "DisplayVersion":
                            regApp.Version = entry.Value;
                            break;

                        case "InstallDate":
                            regApp.Date = entry.Value;
                            break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }
            }
            else
            {
                //////////////////////////////////////////////////////////
                // 64BIT SYSTEM (Made up of 32bit Apps, and 64bit Apps) //
                //////////////////////////////////////////////////////////

                //Get value from dictionary and store in listOfAllAppsInstalled
                ////////////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(Regx64Apps64, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                        case "Publisher":
                            regApp.VendorName = entry.Value;
                            break;

                        case "DisplayName":
                            regApp.Name = entry.Value;
                            break;

                        case "DisplayVersion":
                            regApp.Version = entry.Value;
                            break;

                        case "InstallDate":
                            regApp.Date = entry.Value;
                            break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }

                //Get value from dictionary and store in listOfAllAppsInstalled
                ////////////////////////////////////////////////////////////////
                foreach (var eachDict in GetRegistryKeyValues(Regx64Apps32, registryValuesToRead, true))
                {
                    regApp = new RegistryApp();
                    foreach (var entry in eachDict)
                    {
                        switch (entry.Key)
                        {
                        case "Publisher":
                            regApp.VendorName = entry.Value;
                            break;

                        case "DisplayName":
                            regApp.Name = entry.Value;
                            break;

                        case "DisplayVersion":
                            regApp.Version = entry.Value;
                            break;

                        case "InstallDate":
                            regApp.Date = entry.Value;
                            break;
                        }
                    }
                    listOfAllAppsInstalled.Add(regApp);
                }
            }

            //Get all unique entries, no duplicates! Pleasee no duplicates...
            /////////////////////////////////////////////////////////////////
            var parsedList = new List <RegistryApp>();

            parsedList.AddRange(listOfAllAppsInstalled.Where(regitem => (regitem.Name != null) && (regitem.Name.Length > 1) && (regitem.Name != "")));
            listOfAllAppsInstalled.Clear();
            listOfAllAppsInstalled = parsedList.OrderBy(x => x.Date).ToList();

            return(listOfAllAppsInstalled);
        }