Click here to Skip to main content
15,888,325 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hello for all,
I want to delete all history and username and cookies and every thing related with all types of browsing some thing without any dialog box like this link:

[^]

I want to now how can i call this class in c#

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace watcher
{
    class WinINETCache
    {

        // Fields
        private const int CACHEGROUP_FLAG_FLUSHURL_ONDELETE = 2;
        private const int CACHEGROUP_SEARCH_ALL = 0;
        private const int ERROR_FILE_NOT_FOUND = 2;
        private const int ERROR_INSUFFICENT_BUFFER = 0x7a;
        private const int ERROR_NO_MORE_ITEMS = 0x103;

        // Methods
        public static void ClearCacheItems(bool bClearFiles, bool bClearCookies)
        {
            if (!bClearCookies && !bClearFiles)
            {
                throw new ArgumentException("You must call ClearCacheItems with at least one target");
            }
            if (Environment.OSVersion.Version.Major > 5)
            {
                VistaClearTracks(bClearFiles, bClearCookies);
            }
            else
            {
                if (bClearCookies)
                {
                    ClearCookiesForHost("*");
                }
                if (bClearFiles)
                {
                    long lpGroupId = 0L;
                    int lpdwFirstCacheEntryInfoBufferSize = 0;
                    int cb = 0;
                    IntPtr zero = IntPtr.Zero;
                    IntPtr hFind = IntPtr.Zero;
                    bool flag = false;
                    hFind = FindFirstUrlCacheGroup(0, 0, IntPtr.Zero, 0, ref lpGroupId, IntPtr.Zero);
                    int num4 = Marshal.GetLastWin32Error();
                    if (((hFind != IntPtr.Zero) && (0x103 != num4)) && (2 != num4))
                    {
                        do
                        {
                            flag = DeleteUrlCacheGroup(lpGroupId, 2, IntPtr.Zero);
                            num4 = Marshal.GetLastWin32Error();
                            if (!flag && (2 == num4))
                            {
                                flag = FindNextUrlCacheGroup(hFind, ref lpGroupId, IntPtr.Zero);
                                num4 = Marshal.GetLastWin32Error();
                            }
                        }
                        while (flag || ((0x103 != num4) && (2 != num4)));
                    }
                    hFind = FindFirstUrlCacheEntryEx(null, 0, WININETCACHEENTRYTYPE.ALL, 0L, IntPtr.Zero, ref lpdwFirstCacheEntryInfoBufferSize, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
                    num4 = Marshal.GetLastWin32Error();
                    if ((IntPtr.Zero != hFind) || (0x103 != num4))
                    {
                        cb = lpdwFirstCacheEntryInfoBufferSize;
                        zero = Marshal.AllocHGlobal(cb);
                        hFind = FindFirstUrlCacheEntryEx(null, 0, WININETCACHEENTRYTYPE.ALL, 0L, zero, ref lpdwFirstCacheEntryInfoBufferSize, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
                        num4 = Marshal.GetLastWin32Error();
                        do
                        {
                            INTERNET_CACHE_ENTRY_INFOA internet_cache_entry_infoa = (INTERNET_CACHE_ENTRY_INFOA)Marshal.PtrToStructure(zero, typeof(INTERNET_CACHE_ENTRY_INFOA));
                            lpdwFirstCacheEntryInfoBufferSize = cb;
                            if (WININETCACHEENTRYTYPE.COOKIE_CACHE_ENTRY != (internet_cache_entry_infoa.CacheEntryType & WININETCACHEENTRYTYPE.COOKIE_CACHE_ENTRY))
                            {
                                flag = DeleteUrlCacheEntry(internet_cache_entry_infoa.lpszSourceUrlName);
                            }
                            flag = FindNextUrlCacheEntryEx(hFind, zero, ref lpdwFirstCacheEntryInfoBufferSize, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
                            num4 = Marshal.GetLastWin32Error();
                            if (!flag && (0x103 == num4))
                            {
                                break;
                            }
                            if (!flag && (lpdwFirstCacheEntryInfoBufferSize > cb))
                            {
                                cb = lpdwFirstCacheEntryInfoBufferSize;
                                zero = Marshal.ReAllocHGlobal(zero, (IntPtr)cb);
                                flag = FindNextUrlCacheEntryEx(hFind, zero, ref lpdwFirstCacheEntryInfoBufferSize, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
                            }
                        }
                        while (flag);
                        Marshal.FreeHGlobal(zero);
                    }
                }
            }
        }

        public static void ClearCookies()
        {
            ClearCacheItems(false, true);
        }

        [CodeDescription("Delete all permanent WinINET cookies for sHost; won't clear memory-only session cookies. Supports hostnames with an optional leading wildcard, e.g. *example.com. NOTE: Will not work on VistaIE Protected Mode cookies.")]
        public static void ClearCookiesForHost(string sHost)
        {
            string str;
            INTERNET_CACHE_ENTRY_INFOA internet_cache_entry_infoa;
            bool flag;
            sHost = sHost.Trim();
            if (sHost.Length < 1)
            {
                return;
            }
            if (sHost == "*")
            {
                str = string.Empty;
                if (Environment.OSVersion.Version.Major > 5)
                {
                    VistaClearTracks(false, true);
                    return;
                }
            }
            else
            {
                str = sHost.StartsWith("*") ? sHost.Substring(1).ToLower() : ("@" + sHost.ToLower());
            }
            int lpdwFirstCacheEntryInfoBufferSize = 0;
            int cb = 0;
            IntPtr zero = IntPtr.Zero;
            IntPtr hFind = IntPtr.Zero;
            if ((FindFirstUrlCacheEntry("cookie:", IntPtr.Zero, ref lpdwFirstCacheEntryInfoBufferSize) == IntPtr.Zero) && (0x103 == Marshal.GetLastWin32Error()))
            {
                return;
            }
            cb = lpdwFirstCacheEntryInfoBufferSize;
            zero = Marshal.AllocHGlobal(cb);
            hFind = FindFirstUrlCacheEntry("cookie:", zero, ref lpdwFirstCacheEntryInfoBufferSize);
        Label_00C2:
            internet_cache_entry_infoa = (INTERNET_CACHE_ENTRY_INFOA)Marshal.PtrToStructure(zero, typeof(INTERNET_CACHE_ENTRY_INFOA));
            lpdwFirstCacheEntryInfoBufferSize = cb;
            if (WININETCACHEENTRYTYPE.COOKIE_CACHE_ENTRY == (internet_cache_entry_infoa.CacheEntryType & WININETCACHEENTRYTYPE.COOKIE_CACHE_ENTRY))
            {
                bool flag2;
                if (str.Length == 0)
                {
                    flag2 = true;
                }
                else
                {
                    string str2 = Marshal.PtrToStringAnsi(internet_cache_entry_infoa.lpszSourceUrlName);
                    int index = str2.IndexOf('/');
                    if (index > 0)
                    {
                        str2 = str2.Remove(index);
                    }
                    flag2 = str2.ToLower().EndsWith(str);
                }
                if (flag2)
                {
                    flag = DeleteUrlCacheEntry(internet_cache_entry_infoa.lpszSourceUrlName);
                }
            }
        Label_014A:
            flag = FindNextUrlCacheEntry(hFind, zero, ref lpdwFirstCacheEntryInfoBufferSize);
            if (flag || (0x103 != Marshal.GetLastWin32Error()))
            {
                if (flag || (lpdwFirstCacheEntryInfoBufferSize <= cb))
                {
                    goto Label_00C2;
                }
                cb = lpdwFirstCacheEntryInfoBufferSize;
                zero = Marshal.ReAllocHGlobal(zero, (IntPtr)cb);
                goto Label_014A;
            }
            Marshal.FreeHGlobal(zero);
        }

        public static void ClearFiles()
        {
            ClearCacheItems(true, false);
        }

        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", EntryPoint = "DeleteUrlCacheEntryA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern bool DeleteUrlCacheEntry(IntPtr lpszUrlName);
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern bool DeleteUrlCacheGroup(long GroupId, int dwFlags, IntPtr lpReserved);
        [DllImport("wininet.dll", EntryPoint = "FindFirstUrlCacheEntryA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern IntPtr FindFirstUrlCacheEntry([MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern, IntPtr lpFirstCacheEntryInfo, ref int lpdwFirstCacheEntryInfoBufferSize);
        [DllImport("wininet.dll", EntryPoint = "FindFirstUrlCacheEntryExA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern IntPtr FindFirstUrlCacheEntryEx([MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern, int dwFlags, WININETCACHEENTRYTYPE dwFilter, long GroupId, IntPtr lpFirstCacheEntryInfo, ref int lpdwFirstCacheEntryInfoBufferSize, IntPtr lpReserved, IntPtr pcbReserved2, IntPtr lpReserved3);
        [DllImport("wininet.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern IntPtr FindFirstUrlCacheGroup(int dwFlags, int dwFilter, IntPtr lpSearchCondition, int dwSearchCondition, ref long lpGroupId, IntPtr lpReserved);
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", EntryPoint = "FindNextUrlCacheEntryA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern bool FindNextUrlCacheEntry(IntPtr hFind, IntPtr lpNextCacheEntryInfo, ref int lpdwNextCacheEntryInfoBufferSize);
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", EntryPoint = "FindNextUrlCacheEntryExA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern bool FindNextUrlCacheEntryEx(IntPtr hEnumHandle, IntPtr lpNextCacheEntryInfo, ref int lpdwNextCacheEntryInfoBufferSize, IntPtr lpReserved, IntPtr pcbReserved2, IntPtr lpReserved3);
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern bool FindNextUrlCacheGroup(IntPtr hFind, ref long lpGroupId, IntPtr lpReserved);
        internal static string GetCacheItemInfo(string sURL)
        {
            int lpdwCacheEntryInfoBufferSize = 0;
            int cb = 0;
            IntPtr zero = IntPtr.Zero;
            bool flag = GetUrlCacheEntryInfoA(sURL, zero, ref lpdwCacheEntryInfoBufferSize);
            int num = Marshal.GetLastWin32Error();
            if (flag || (num != 0x7a))
            {
                return string.Format("This URL is not present in the WinINET cache. [Code: {0}]", num);
            }
            cb = lpdwCacheEntryInfoBufferSize;
            zero = Marshal.AllocHGlobal(cb);
            flag = GetUrlCacheEntryInfoA(sURL, zero, ref lpdwCacheEntryInfoBufferSize);
            num = Marshal.GetLastWin32Error();
            if (!flag)
            {
                Marshal.FreeHGlobal(zero);
                return ("GetUrlCacheEntryInfoA with buffer failed. 2=filenotfound 122=insufficient buffer, 259=nomoreitems. Last error: " + num.ToString() + "\n");
            }
            INTERNET_CACHE_ENTRY_INFOA internet_cache_entry_infoa = (INTERNET_CACHE_ENTRY_INFOA)Marshal.PtrToStructure(zero, typeof(INTERNET_CACHE_ENTRY_INFOA));
            lpdwCacheEntryInfoBufferSize = cb;
            long fileTime = (internet_cache_entry_infoa.LastModifiedTime.dwHighDateTime << 0x20) | ((long)((ulong)internet_cache_entry_infoa.LastModifiedTime.dwLowDateTime));
            long num5 = (internet_cache_entry_infoa.LastAccessTime.dwHighDateTime << 0x20) | ((long)((ulong)internet_cache_entry_infoa.LastAccessTime.dwLowDateTime));
            long num6 = (internet_cache_entry_infoa.LastSyncTime.dwHighDateTime << 0x20) | ((long)((ulong)internet_cache_entry_infoa.LastSyncTime.dwLowDateTime));
            long num7 = (internet_cache_entry_infoa.ExpireTime.dwHighDateTime << 0x20) | ((long)((ulong)internet_cache_entry_infoa.ExpireTime.dwLowDateTime));
            string[] strArray = new string[] { 
            "Url:\t\t", Marshal.PtrToStringAnsi(internet_cache_entry_infoa.lpszSourceUrlName), "\nCache File:\t", Marshal.PtrToStringAnsi(internet_cache_entry_infoa.lpszLocalFileName), "\nSize:\t\t", ((ulong) ((internet_cache_entry_infoa.dwSizeHigh << 0x20) + internet_cache_entry_infoa.dwSizeLow)).ToString("0,0"), " bytes\nFile Extension:\t", Marshal.PtrToStringAnsi(internet_cache_entry_infoa.lpszFileExtension), "\nHit Rate:\t", internet_cache_entry_infoa.dwHitRate.ToString(), "\nUse Count:\t", internet_cache_entry_infoa.dwUseCount.ToString(), "\nDon't Scavenge for:\t", internet_cache_entry_infoa._Union.dwExemptDelta.ToString(), " seconds\nLast Modified:\t", DateTime.FromFileTime(fileTime).ToString(), 
            "\nLast Accessed:\t", DateTime.FromFileTime(num5).ToString(), "\nLast Synced:  \t", DateTime.FromFileTime(num6).ToString(), "\nEntry Expires:\t", DateTime.FromFileTime(num7).ToString(), "\n"
         };
            string str = string.Concat(strArray);
            Marshal.FreeHGlobal(zero);
            return str;
        }

        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("wininet.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern bool GetUrlCacheEntryInfoA(string lpszUrlName, IntPtr lpCacheEntryInfo, ref int lpdwCacheEntryInfoBufferSize);
        private static void VistaClearTracks(bool bClearFiles, bool bClearCookies)
        {
            int num = 0;
            if (bClearCookies)
            {
                num = 2;
            }
            if (bClearFiles)
            {
                num = 0x100c;
            }
            try
            {
                using (Process.Start("rundll32.exe", "inetcpl.cpl,ClearMyTracksByProcess " + num.ToString()))
                {
                }
            }
            catch (Exception exception)
            {
                FiddlerApplication.DoNotifyUser("Failed to launch ClearMyTracksByProcess.\n" + exception.Message, "Error");
            }
        }

        // Nested Types
        [StructLayout(LayoutKind.Sequential)]
        private class INTERNET_CACHE_ENTRY_INFOA
        {
            public uint dwStructureSize;
            public IntPtr lpszSourceUrlName;
            public IntPtr lpszLocalFileName;
            public WinINETCache.WININETCACHEENTRYTYPE 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 IntPtr lpszFileExtension;
            public WinINETCache.WININETCACHEENTRYINFOUNION _Union;
        }

        [StructLayout(LayoutKind.Explicit)]
        private struct WININETCACHEENTRYINFOUNION
        {
            // Fields
            [FieldOffset(0)]
            public uint dwExemptDelta;
            [FieldOffset(0)]
            public uint dwReserved;
        }

        private enum WININETCACHEENTRYTYPE
        {
            ALL = 0x31003d,
            COOKIE_CACHE_ENTRY = 0x100000,
            EDITED_CACHE_ENTRY = 8,
            None = 0,
            NORMAL_CACHE_ENTRY = 1,
            SPARSE_CACHE_ENTRY = 0x10000,
            STICKY_CACHE_ENTRY = 4,
            TRACK_OFFLINE_CACHE_ENTRY = 0x10,
            TRACK_ONLINE_CACHE_ENTRY = 0x20,
            URLHISTORY_CACHE_ENTRY = 0x200000
        }
    }
}





HOW Can i using this code succesfully?????????????//
Posted
Comments
Shubham Choudhary 18-Mar-13 4:44am    
make object of the class and call !!! like cal.fun();

1 solution

Add a reference to the namespace Watcher and call the ClearCacheItems passing in the 2 booleans
 
Share this answer
 
Comments
salwaieh 18-Mar-13 5:08am    
what is the booleans variable can I put into this function??and what name space name is?Can you write the code to me to full understanding what you mean
Mycroft Holmes 18-Mar-13 7:17am    
Your question shows such a fundamental lack of knowledge that I cannot answer the question. Get a book and start studying!
salwaieh 18-Mar-13 8:03am    
thank u for answer ...but I have red line under this line [CodeDescription ...
and when I delete this line i had error in this line:
FiddlerApplication.DoNotifyUser
there is any library I don't call it????
When I deleted this tow lines the code can't delete all files
so that i think i have a proplem when i call ClearCacheItems ...
please see the head file if i forget any library to call tell me.and thanks a gain

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900