用C#代码清楚掉C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files文件夹下的所有东西,普通的IO操作肯定是不行的,例如: string [] file= Directory.GetFiles("路径");然后把file到的文件delete掉,这方法不行,所以请教各位高手用API也好,用其他方法也好,能删掉就可以.在线等..........

解决方案 »

  1.   

    两种方法,推荐接口方式。
    using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]
    public class INTERNET_CACHE_ENTRY_INFOW
    {
        public uint dwStructSize;
        public string lpszSourceUrlName;
        public string lpszLocalFileName;
        public uint CacheEntryType;
        public uint dwUseCount;
        public uint dwHitRate;
        public uint dwSizeLow;
        public uint dwSizeHigh;
        public FILETIME LastModifiedTime;
        public FILETIME ExpireTime;
        public FILETIME LastAccessTime;
        public FILETIME LastSyncTime;
        public IntPtr lpHeaderInfo;
        public uint dwHeaderInfoSize;
        public string lpszFileExtension;
        public uint dwReserved; //union uint dwExemptDelta;
    }[DllImport("wininet.dll")]
    public static extern IntPtr FindFirstUrlCacheEntryEx(  string lpszUrlSearchPattern,
      uint dwFlags,
      uint dwFilter,
      Int64 GroupId,
      IntPtr lpFirstCacheEntryInfo,
      ref uint lpdwFirstCacheEntryInfoBufferSize,
      Pointer lpGroupAttributes,
      Pointer pcbGroupAttributes,
      Pointer lpReserved
    );[DllImport("wininet.dll")]
    public static extern bool FindCloseUrlCache(IntPtr hEnumHandle);[DllImport("wininet.dll")]
    public static extern bool FindNextUrlCacheEntryEx(
        IntPtr hEnumHandle,
        IntPtr lpFirstCacheEntryInfo,
        ref uint lpdwFirstCacheEntryInfoBufferSize,
        Pointer lpGroupAttributes,
        Pointer pcbGroupAttributes,
        Pointer lpReserved);public uint NORMAL_CACHE_ENTRY = 0x00000001;private void button1_Click(object sender, EventArgs e)
    {
        IntPtr vHandle;
        INTERNET_CACHE_ENTRY_INFOW vInternetCacheEntryInfo = new INTERNET_CACHE_ENTRY_INFOW();
        uint vFirstCacheEntryInfoBufferSize = 0;
        FindFirstUrlCacheEntryEx(null, 0, NORMAL_CACHE_ENTRY, 0, (IntPtr)null,
            ref vFirstCacheEntryInfoBufferSize, null, null, null);
        IntPtr vBuffer = Marshal.AllocHGlobal((int)vFirstCacheEntryInfoBufferSize);
        vHandle = FindFirstUrlCacheEntryEx(null, 0, NORMAL_CACHE_ENTRY, 0,
           vBuffer, ref vFirstCacheEntryInfoBufferSize,
           null, null, null);
        while (vHandle != null)
        {
            Marshal.PtrToStructure(vBuffer, vInternetCacheEntryInfo);
            richTextBox1.AppendText(vInternetCacheEntryInfo.lpszSourceUrlName + "\r\n");
            Marshal.FreeCoTaskMem(vBuffer);        FindNextUrlCacheEntryEx(vHandle, (IntPtr)null, ref vFirstCacheEntryInfoBufferSize,
              null, null, null);
            vBuffer = Marshal.AllocHGlobal((int)vFirstCacheEntryInfoBufferSize);
            if (!FindNextUrlCacheEntryEx(vHandle, vBuffer,
               ref vFirstCacheEntryInfoBufferSize, null, null, null)) break;
        }
        Marshal.FreeCoTaskMem(vBuffer);
    }//-------接口方式-------
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;namespace IEHistory
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                IUrlHistoryStg2 vUrlHistoryStg2 = (IUrlHistoryStg2)new UrlHistory();
                IEnumSTATURL vEnumSTATURL = vUrlHistoryStg2.EnumUrls();
                STATURL vSTATURL;
                uint vFectched;
                while (vEnumSTATURL.Next(1, out vSTATURL, out vFectched) == 0)
                {
                    richTextBox1.AppendText(string.Format("{0}:{1}\r\n", 
                        vSTATURL.pwcsTitle, vSTATURL.pwcsUrl));
                }
                //vUrlHistoryStg2.ClearHistory();//清除历史
            }
        }    struct STATURL
        {
            public static uint SIZEOF_STATURL =
                (uint)Marshal.SizeOf(typeof(STATURL));        public uint cbSize;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string pwcsUrl;
            [MarshalAs(UnmanagedType.LPWStr)]
            public string pwcsTitle;
            public FILETIME ftLastVisited,
                ftLastUpdated,
                ftExpires;
            public uint dwFlags;
        }    [ComImport, Guid("3C374A42-BAE4-11CF-BF7D-00AA006946EE"), 
            InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        interface IEnumSTATURL
        {
            [PreserveSig]
            uint Next(uint celt, out STATURL rgelt, out uint pceltFetched);
            void Skip(uint celt);
            void Reset();
            void Clone(out IEnumSTATURL ppenum);
            void SetFilter(
                [MarshalAs(UnmanagedType.LPWStr)] string poszFilter,
                uint dwFlags);
        }    [ComImport, Guid("AFA0DC11-C313-11d0-831A-00C04FD5AE38"),
            InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        interface IUrlHistoryStg2
        {
            #region IUrlHistoryStg methods
            void AddUrl(
                [MarshalAs(UnmanagedType.LPWStr)] string pocsUrl,
                [MarshalAs(UnmanagedType.LPWStr)] string pocsTitle,
                uint dwFlags);        void DeleteUrl(
                [MarshalAs(UnmanagedType.LPWStr)] string pocsUrl,
                uint dwFlags);        void QueryUrl(
                [MarshalAs(UnmanagedType.LPWStr)] string pocsUrl,
                uint dwFlags,
                ref STATURL lpSTATURL);        void BindToObject(
                [MarshalAs(UnmanagedType.LPWStr)] string pocsUrl,
                ref Guid riid,
                [MarshalAs(UnmanagedType.IUnknown)] out object ppvOut);        IEnumSTATURL EnumUrls();
            #endregion        void AddUrlAndNotify(
                [MarshalAs(UnmanagedType.LPWStr)] string pocsUrl,
                [MarshalAs(UnmanagedType.LPWStr)] string pocsTitle,
                uint dwFlags,
                [MarshalAs(UnmanagedType.Bool)] bool fWriteHistory,
                [MarshalAs(UnmanagedType.IUnknown)] object /*IOleCommandTarget*/
                poctNotify,
                [MarshalAs(UnmanagedType.IUnknown)] object punkISFolder);        void ClearHistory();
        }    [ComImport, Guid("3C374A40-BAE4-11CF-BF7D-00AA006946EE")]
        class UrlHistory /* : IUrlHistoryStg[2] */ { }
    }