| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 | using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.InteropServices;namespace Optimizer{    internal static class CleanHelper    {        [DllImport("Shell32.dll")]        static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlag dwFlags);        // SYSTEM FOLDERS        internal static readonly string System32Folder = Environment.GetFolderPath(Environment.SpecialFolder.System);        internal static readonly string TempFolder = Path.GetTempPath();        internal static readonly string ProfileAppDataRoaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);        internal static readonly string ProgramData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);        internal static readonly string ProfileAppDataLocal = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);        //internal static readonly string ProfileAppDataLocalLow = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "Low";        //internal static readonly string OSDrive = System32Folder.Substring(0, 3);        internal static readonly string OSDriveWindows = Environment.GetEnvironmentVariable("WINDIR", EnvironmentVariableTarget.Machine);        // INTERNET EXPLORER CACHE        static string[] ieCache =        {            Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\INetCache\\IE"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WebCache.old")        };        // CHROME FOLDERS        static string chromeFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData\\Local\\Google\\Chrome\\User Data");        static string[] chromeUserDataCacheDirs = { "Default\\Cache", "Default\\Code Cache\\", "Default\\GPUCache\\", "ShaderCache", "Default\\Service Worker\\CacheStorage\\", "Default\\Service Worker\\ScriptCache\\", "GrShaderCache\\GPUCache\\", "Default\\File System\\", "Default\\JumpListIconsMostVisited\\", "Default\\JumpListIconsRecentClosed\\", "Default\\Service Worker\\Database" };        static string chromePasswordsDir = Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Login Data");        static string[] chromeSessionDirs =        {            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Sessions"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Session Storage"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Extension State"),        };        static string[] chromeCookiesDirs =        {            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\IndexedDB"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Cookies"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\Cookies-journal")        };        static string[] chromeHistoryDirs =        {            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\History"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\History Provider Cache"),            Path.Combine(ProfileAppDataLocal, "Google\\Chrome\\User Data\\Default\\History-journal")        };        // FIREFOX FOLDERS        static string firefoxRoaming = Path.Combine(ProfileAppDataRoaming, "Mozilla\\Firefox\\Profiles");        static string firefoxLocal = Path.Combine(ProfileAppDataLocal, "Mozilla\\Firefox\\Profiles");        // EDGE FOLDERS        static string edgeHistory = Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\History");        static string[] edgeCookies =        {            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Cookies"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\IndexedDB")        };        static string[] edgeSession =        {            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Sessions"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Session Storage"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Extension State")        };        static string[] edgeCache =        {            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Cache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Code Cache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\GPUCache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\ShaderCache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Service Worker\\CacheStorage"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Service Worker\\ScriptCache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\GrShaderCache\\GPUCache"),            Path.Combine(ProfileAppDataLocal, "Microsoft\\Edge\\User Data\\Default\\Service Worker\\Database"),        };        // BRAVE FOLDERS        static string braveFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData\\Local\\BraveSoftware\\Brave-Browser\\User Data");        static string[] braveUserDataCacheDirs = { "Default\\Cache", "Default\\Code Cache\\", "Default\\GPUCache\\", "ShaderCache", "Default\\Service Worker\\CacheStorage\\", "Default\\Service Worker\\ScriptCache\\", "GrShaderCache\\GPUCache\\", "Default\\File System\\", "Default\\JumpListIconsMostVisited\\", "Default\\JumpListIconsRecentClosed\\", "Default\\Service Worker\\Database" };        static string bravePasswordsDir = Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Login Data");        static string[] braveSessionDirs =        {            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Sessions"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Session Storage"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Extension State"),        };        static string[] braveCookiesDirs =        {            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\IndexedDB"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Cookies"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Cookies-journal")        };        static string[] braveHistoryDirs =        {            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\History"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\History Provider Cache"),            Path.Combine(ProfileAppDataLocal, "BraveSoftware\\Brave-Browser\\User Data\\Default\\History-journal")        };        internal static List<string> PreviewCleanList = new List<string>();        internal static ByteSize PreviewSizeToBeFreed = new ByteSize(0);        internal static void PreviewFolder(string path)        {            try            {                if (File.Exists(path))                {                    PreviewCleanList.Add(path);                    return;                }                DirectoryInfo di = new DirectoryInfo(path);                foreach (FileInfo file in di.GetFiles("*", SearchOption.AllDirectories))                {                    try                    {                        PreviewCleanList.Add(file.FullName);                    }                    catch { }                }                foreach (DirectoryInfo dir in di.GetDirectories("*", SearchOption.AllDirectories))                {                    try                    {                        PreviewCleanList.Add(dir.FullName);                    }                    catch { }                }            }            catch { }        }        internal static void Clean()        {            foreach (string x in PreviewCleanList)            {                try                {                    if (Directory.Exists(x)) Directory.Delete(x);                    if (File.Exists(x)) File.Delete(x);                }                catch { }            }        }        internal static void EmptyRecycleBin()        {            SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlag.SHERB_NOSOUND | RecycleFlag.SHERB_NOCONFIRMATION);        }        internal static void PreviewTemp()        {            PreviewFolder(TempFolder);            PreviewSizeToBeFreed += CalculateSize(TempFolder);        }        internal static void PreviewMinidumps()        {            PreviewFolder(Path.Combine(OSDriveWindows, "Minidump"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(OSDriveWindows, "Minidump"));        }        internal static void PreviewErrorReports()        {            PreviewFolder(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ReportArchive"));            PreviewFolder(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ReportQueue"));            PreviewFolder(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\Temp"));            PreviewFolder(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ERC"));            PreviewFolder(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ReportArchive"));            PreviewFolder(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ReportQueue"));            PreviewFolder(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\Temp"));            PreviewFolder(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ERC"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ReportArchive"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ReportQueue"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\Temp"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProfileAppDataLocal, "Microsoft\\Windows\\WER\\ERC"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ReportArchive"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ReportQueue"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\Temp"));            PreviewSizeToBeFreed += CalculateSize(Path.Combine(ProgramData, "Microsoft\\Windows\\WER\\ERC"));        }        internal static ByteSize CalculateSize(string fileOrFolder)        {            ByteSize totalSize = new ByteSize(0);            bool isFolder = Directory.Exists(fileOrFolder);            try            {                if (isFolder)                {                    DirectoryInfo dir = new DirectoryInfo(fileOrFolder);                    totalSize += totalSize.AddBytes(dir.EnumerateFiles("*", SearchOption.AllDirectories).Sum(file => file.Length));                }                else                {                    FileInfo file = new FileInfo(fileOrFolder);                    totalSize = totalSize.AddBytes(file.Length);                }            }            catch { }            return totalSize;        }        internal static void PreviewEdgeClean(bool cache, bool cookies, bool seachHistory, bool session)        {            if (cache)            {                foreach (string x in edgeCache)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (cookies)            {                foreach (string x in edgeCookies)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (seachHistory)            {                PreviewFolder(edgeHistory);                PreviewSizeToBeFreed += CalculateSize(edgeHistory);            }            if (session)            {                foreach (string x in edgeSession)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }        }        internal static void PreviewInternetExplorerCache()        {            foreach (string x in ieCache)            {                PreviewFolder(x);                PreviewSizeToBeFreed += CalculateSize(x);            }        }        internal static void PreviewFireFoxClean(bool cache, bool cookies, bool searchHistory)        {            foreach (string x in Directory.EnumerateDirectories(firefoxRoaming))            {                if (x.ToLowerInvariant().Contains("release"))                {                    if (cookies)                    {                        PreviewFolder(Path.Combine(x, "cookies.sqlite"));                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cookies.sqlite"));                    }                    if (searchHistory)                    {                        PreviewFolder(Path.Combine(x, "places.sqlite"));                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "places.sqlite"));                    }                    if (cache)                    {                        PreviewFolder(Path.Combine(x, "shader-cache"));                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "shader-cache"));                    }                }            }            if (cache)            {                foreach (string x in Directory.EnumerateDirectories(firefoxLocal))                {                    if (x.ToLowerInvariant().Contains("release"))                    {                        PreviewFolder(Path.Combine(x, "cache2"));                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cache2"));                    }                }            }        }        internal static void PreviewBraveClean(bool cache, bool cookies, bool searchHistory, bool session, bool passwords)        {            if (cache)            {                foreach (string x in braveUserDataCacheDirs)                {                    PreviewFolder(Path.Combine(braveFolder, x));                    PreviewSizeToBeFreed += CalculateSize(Path.Combine(braveFolder, x));                }            }            if (session)            {                foreach (string x in braveSessionDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (cookies)            {                foreach (string x in braveCookiesDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (searchHistory)            {                foreach (string x in braveHistoryDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (passwords)            {                PreviewFolder(bravePasswordsDir);                PreviewSizeToBeFreed += CalculateSize(bravePasswordsDir);            }        }        internal static void PreviewChromeClean(bool cache, bool cookies, bool searchHistory, bool session, bool passwords)        {            if (cache)            {                foreach (string x in chromeUserDataCacheDirs)                {                    PreviewFolder(Path.Combine(chromeFolder, x));                    PreviewSizeToBeFreed += CalculateSize(Path.Combine(chromeFolder, x));                }            }            if (session)            {                foreach (string x in chromeSessionDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (cookies)            {                foreach (string x in chromeCookiesDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (searchHistory)            {                foreach (string x in chromeHistoryDirs)                {                    PreviewFolder(x);                    PreviewSizeToBeFreed += CalculateSize(x);                }            }            if (passwords)            {                PreviewFolder(chromePasswordsDir);                PreviewSizeToBeFreed += CalculateSize(chromePasswordsDir);            }        }    }}
 |