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