private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { this.lb_Progression.Text = ("Erreur"); //Si l'application rencontre une erreur, on affiche "Erreur" dans le statut de progression de la Form dépannage MessageBox.Show("L'application à rencontré une erreur : " + e.Error.Message, "SBiiXpress - Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); //Affichage d'un message d'erreur avec détails } else { //Si l'application ne rencontre pas d'erreur, on continue ici System.Threading.Thread.Sleep(5000); //On fait une petite pause de 5s pour que CCleaner puisse avoir le temps de se lancer if (!isCCleanerPresent) { //Si CCleaner n'est pas installé, on affiche le message suivant EspaceAp = EspaceLibre(); MessageBox.Show("Le nettoyage est terminé cependant vous pourriez obtenir de meilleurs résultats en installant CCleaner" + Environment.NewLine + CalculEspaceLibere() + " Mo ont étés libérés", "SBiiXpress - Nettoyage terminé", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (!isCCleanerPresent && Verifications.IsAdministrator()) { SupprimerValeurRegistre(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VolumeCaches\\", "StateFlags0666", rV); EspaceAp = EspaceLibre(); MessageBox.Show("Le nettoyage est terminé cependant vous pourriez obtenir de meilleurs résultats en installant CCleaner" + Environment.NewLine + CalculEspaceLibere() + " Mo ont étés libérés", "SBiiXpress - Nettoyage terminé", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (!Verifications.IsAdministrator() && ProcessEnCours("CCleaner64") == 1 || !Verifications.IsAdministrator() && ProcessEnCours("CCleaner") == 1) //On vérifie que CCleaner ait fini pour afficher le message final { //Si l'utilisateur n'est pas Admin et que CCleaner à terminé, on affiche le message suivant EspaceAp = EspaceLibre(); MessageBox.Show("Le nettoyage est maintenant terminé, cependant, vous obtiendrez de meilleurs résultats en mode administrateur" + Environment.NewLine + CalculEspaceLibere() + " Mo ont étés libérés", "SBiiXpress - Nettoyage terminé", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Si tout est fini et que l'utilisateur est Admin, on affiche le message suivant EspaceAp = EspaceLibre(); MessageBox.Show("Le nettoyage est maintenant terminé. \n" + CalculEspaceLibere() + " Mo ont étés libérés", "SBiiXpress - Nettoyage terminé", MessageBoxButtons.OK, MessageBoxIcon.Information); SupprimerValeurRegistre(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VolumeCaches\\", "StateFlags0666", rV); } } this.lb_PourcentProg.Visible = false; this.lb_Progression.Visible = false; this.pb_Traitement.Visible = false; this.btn_Optimisation.Enabled = true; } }
private void btn_NettoyageDisque_Click(object sender, EventArgs e) { EspaceAv = EspaceLibre(); if (Verifications.IsAdministrator() == true) { //On teste si l'utilisateur actuel possède les droits d'administrateur, si c'est le cas on continue DialogResult result = MessageBox.Show("Êtes-vous sûr de vouloir continuer ?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { //Si l'utilisateur valide, on affiche les données de progression sur l'écran de l'application Dépannage this.lb_Progression.Visible = true; this.lb_PourcentProg.Visible = true; this.pb_Traitement.Visible = true; this.btn_Optimisation.Enabled = false; bgw.RunWorkerAsync(); //On lance le BackGroundWorker, qui permettra d'obtenir des informations sur la progression et éviter que l'application principale ne freeze lors du lancement des process } } else { bgw.RunWorkerAsync(); this.btn_Optimisation.Enabled = false; } }
public void Traitement() { if (Verifications.IsAdministrator()) { Verifications.SuppOldSaveReg(); try { DirectoryInfo di = Directory.CreateDirectory("C:\\SBiiXpress\\Save\\Registry"); Exec("regedit.exe", " /E C:\\SBiiXpress\\Save\\Registry\\Save_" + DateTime.Now.ToString("MM_dd_yyyy") + ".reg"); bgw.ReportProgress(10); } catch (Exception err) { MessageBox.Show("Impossible de sauvegarder le registre" + Environment.NewLine + err.Message, "SBiiXpress - Erreur lors de la sauvegarde du registre", MessageBoxButtons.OK, MessageBoxIcon.Error); bgw.ReportProgress(10); } Exec("rundll32.exe", " inetcpl.cpl,ClearMyTracksByProcess 4351"); bgw.ReportProgress(25); if (ProcessEnCours("rundll32") == 1) { if (File.Exists("C:\\Program Files\\CCleaner\\CCleaner.exe") == true) { Exec("CCleaner.exe", " /auto"); } else { isCCleanerPresent = false; } } bgw.ReportProgress(35); LectureEcritureRegistre(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VolumeCaches\\", "StateFlags0666", 2, RegistryValueKind.DWord, rV); bgw.ReportProgress(50); ecrireRegistre("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer", "AlwaysUnloadDll", 1, RegistryValueKind.DWord, rV); bgw.ReportProgress(60); if (ProcessEnCours("CCleaner64") == 1) { Exec("cleanmgr.exe", " /sagerun:0666"); } bgw.ReportProgress(70); Exec("cmd", " /c net stop wuauserv"); Exec("cmd", "/c rd /s /Q %Windir%\\SoftwareDistribution"); bgw.ReportProgress(80); if (ProcessEnCours("cleanmgr") == 1) { bgw.ReportProgress(100); Exec("cmd", " /c net start wuauserv"); } } else { //Cette partie est réservée aux utilisateurs invités, le traitement est donc plus limité car les droits sont nécessaires pour certaines fonctionnalités Exec("rundll32.exe", " inetcpl.cpl,ClearMyTracksByProcess 4351"); if (ProcessEnCours("rundll32") == 1) //On vérifie que RunDll32 ait terminé pour pouvoir tenter de lancer CCleaner { if (File.Exists("C:\\Program Files\\CCleaner\\CCleaner.exe") == true) //On vérifie que le fichier CCleaner.exe existe pour pouvoir le lancer { Exec("CCleaner.exe", " /auto"); //Lancement de CCleaner en mode automatique } else { isCCleanerPresent = false; } } } }