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