C#-如何删除临时internet文件

本文关键字:internet 文件 删除 何删除 C#- | 更新日期: 2023-09-27 18:00:44

我想完全清除临时Internet文件文件夹。文件夹的位置,例如C:'Users'Username'AppData'Local'Microsoft'Windows'Temporary Internet Files,取决于Windows的版本,因此它必须是动态的。

C#-如何删除临时internet文件

使用此路径:Environment.SpecialFolder.InternetCache

string path = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
//for deleting files
System.IO.DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo file in di.GetFiles())
{
    file.Delete(); 
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
    dir.Delete(true); //delete subdirectories and files
}

您可能还需要终止进程Internet Explore并更改目录属性,不要以为这对Index.dat文件有效,因为MS不断更改规则。

点击我的名字,代码也删除Firefox文件和闪存共享对象

using System;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics; 
using System.Text;
namespace Fidling
{
    public static class SpywareRemoval
    {
        private static void RemoveSpywareFiles(string RootPath, string Path,bool Recursive)
        {
            string FullPath = RootPath + Path + "''";
            if (Directory.Exists(FullPath))
            {
                DirectoryInfo DInfo = new DirectoryInfo(FullPath);
                FileAttributes Attr = DInfo.Attributes;
                DInfo.Attributes = FileAttributes.Normal;
                foreach (string FileName in Directory.GetFiles(FullPath))
                {
                    RemoveSpywareFile(FileName);
                }
                if (Recursive)
                {
                    foreach (string DirName in Directory.GetDirectories(FullPath))
                    {
                        RemoveSpywareFiles("", DirName, true);
                        try { Directory.Delete(DirName); }catch { }
                    }
                }
                DInfo.Attributes = Attr;
            }
        }
        private static void RemoveSpywareFile(string FileName)
        {
            if (File.Exists(FileName))
            {
                try { File.Delete(FileName); }catch { }//Locked by something and you can forget trying to delete index.dat files this way
            }
        }
        private static void DeleteFireFoxFiles(string FireFoxPath)
        {
            RemoveSpywareFile(FireFoxPath + "cookies.sqlite");
            RemoveSpywareFile(FireFoxPath + "content-prefs.sqlite");
            RemoveSpywareFile(FireFoxPath + "downloads.sqlite");
            RemoveSpywareFile(FireFoxPath + "formhistory.sqlite");
            RemoveSpywareFile(FireFoxPath + "search.sqlite");
            RemoveSpywareFile(FireFoxPath + "signons.sqlite");
            RemoveSpywareFile(FireFoxPath + "search.json");
            RemoveSpywareFile(FireFoxPath + "permissions.sqlite");
        }
        public static void RunCleanup()
        {
            try { KillProcess("iexplore"); }
            catch { }//Need to stop incase they have locked the files we want to delete
            try { KillProcess("FireFox"); }
            catch { }//Need to stop incase they have locked the files we want to delete
            string RootPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal).ToLower().Replace("documents", "");
            RemoveSpywareFiles(RootPath, @"AppData'Roaming'Macromedia'Flash Player'#SharedObjects",false);
            RemoveSpywareFiles(RootPath, @"AppData'Roaming'Macromedia'Flash Player'macromedia.com'support'flashplayer'sys'#local", false);
            RemoveSpywareFiles(RootPath, @"AppData'Local'Temporary Internet Files", false);//Not working
            RemoveSpywareFiles("", Environment.GetFolderPath(Environment.SpecialFolder.Cookies), true);
            RemoveSpywareFiles("", Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), true);
            RemoveSpywareFiles("", Environment.GetFolderPath(Environment.SpecialFolder.History), true);
            RemoveSpywareFiles(RootPath, @"AppData'Local'Microsoft'Windows'Wer", true);  
            RemoveSpywareFiles(RootPath, @"AppData'Local'Microsoft'Windows'Caches", false);          
            RemoveSpywareFiles(RootPath, @"AppData'Local'Microsoft'WebsiteCache", false);
            RemoveSpywareFiles(RootPath, @"AppData'Local'Temp", false);
            RemoveSpywareFiles(RootPath, @"AppData'LocalLow'Microsoft'CryptnetUrlCache", false);
            RemoveSpywareFiles(RootPath, @"AppData'LocalLow'Apple Computer'QuickTime'downloads", false);
            RemoveSpywareFiles(RootPath, @"AppData'Local'Mozilla'Firefox'Profiles", false);
            RemoveSpywareFiles(RootPath, @"AppData'Roaming'Microsoft'Office'Recent", false);
            RemoveSpywareFiles(RootPath, @"AppData'Roaming'Adobe'Flash Player'AssetCache", false);
            if (Directory.Exists(RootPath + @"'AppData'Roaming'Mozilla'Firefox'Profiles"))
            {
                string FireFoxPath = RootPath + @"AppData'Roaming'Mozilla'Firefox'Profiles'";
                DeleteFireFoxFiles(FireFoxPath);
                foreach (string SubPath in Directory.GetDirectories(FireFoxPath))
                {
                    DeleteFireFoxFiles(SubPath + "''");
                }
            }
        }
        private static void KillProcess(string ProcessName)
        {//We ned to kill Internet explorer and Firefox to stop them locking files
            ProcessName = ProcessName.ToLower();
            foreach (Process P in Process.GetProcesses())
            {
                if (P.ProcessName.ToLower().StartsWith(ProcessName))
                    P.Kill();
            }
        }
    }
}

使用带有Environment.SpecialFolder枚举的函数Environment.GetFolderPath()获取路径。删除该目录中包含的所有文件,同时对其进行迭代。

您可以这样做。

using System.IO;
public static void Main()
{
 ClearFolder(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache))); // Execute ClearFolder() on the IE's cache folder
 }
 void ClearFolder(DirectoryInfo diPath)
 {
   foreach (FileInfo fiCurrFile in diPath.GetFiles())
   {
      fiCurrFile.Delete();
   }
   foreach (DirectoryInfo diSubFolder in diPath.GetDirectories())
   {
      ClearFolder(diSubFolder); // Call recursively for all subfolders
   }
}

我知道你可能不知道如何开始,但StackOverflow并不是一个你可以直接出现并请求代码的地方。

在任何情况下,让你开始的一个真正的基本代码是:

List<string> someFiles = Directory.EnumerateFiles(Environment.GetFolderPath(System.Environment.SpecialFolder.InternetCache)).ToList();
foreach (var fileName in someFiles)
    File.Delete(fileName);

当然,你必须考虑访问权限、锁定的文件、子文件夹等。

我建议你从这个开始,然后当你真的有一些工作代码时再提出进一步的问题。