引自:http://www.codeproject.com/KB/miscctrl/ManageBrowser.aspx?display=Print
Introduction
This is a little program which helps you to see what your Internet
Explorer stores about you. Additionally, it allows you to delete some of
the files.
Background
Why this program? The Internet Explorer allows you to delete its
cache, the browser's history and your cookies. So for what reason should
you need this program?
Well, unfortunately the mentioned deleting is
only half the truth. In fact, deleting your cache within the Internet
Explorer means, that only your cache files will be removed. These files
are in your users' directory under ..\Temporary Internet Files\Content.IE5 in subdirectories, which have such funny names like "09WJE130".
But there is another file, which contains all your visited internet links, storing them for a long, long time: "index.dat".
This
file usually has a size of some MB. If you open it with a text editor
and scroll down, you will detect hundreds of links in a readable form.
And: this file will never be deleted by means of Internet Explorer.
So
I've written this program to reveal, what your browser stores about
you. And I want to give you the possibility to delete some of these
annoying files.
Using the Code
As you can see in the image above, the main program contains a
TabControl with six TabPages. Each of these TabPages allows you to
administer a special part of the browser's files.
So let's begin with the TabPage Browser's URLs history, which appears after program start.
Background:
If you would delete the browser's history in the Internet Explorer, all
the previous visited links in the dropdown list of your browser would
vanish. All these links are stored in the registry under "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs"
and after deletion, all the keys and values are gone. But sometimes,
it's useful not to delete all of them or to store them in an own list to
reuse them later (ok, there a favourites, I know...). Therefore, I've
introduced two lists: the actual browser's history and a file, which
stores my personal list.
The functionality within the TabPage above
allows you to delete parts of your browser's history, store some links
in your personal list or restore links from your personal list to the
history. In the following you can see the function, which gets the
TypedURLs from the registry and stores them in a listview.
publicconststring REG_URL = "SOFTWARE\\MICROSOFT\\INTERNET EXPLORER\\TYPEDURLS";
publicconststring REG_URL_SHORT = "SOFTWARE\\MICROSOFT\\INTERNET EXPLORER";
publicstruct histlink
{
publicstring Entry;
publicstring URL;
}
publicstatic SortedList<int, histlink> historylinks = new SortedList<int, histlink>();
publicvoid GetHistory()
{
historylinks.Clear();
using (RegistryKey tempKey = Registry.CurrentUser.OpenSubKey(REG_URL))
{
if (tempKey == null)
{
using (RegistryKey tempKeyShort =
Registry.CurrentUser.OpenSubKey(REG_URL_SHORT, true))
{
if (tempKeyShort == null)
{
System.Windows.Forms.MessageBox.Show(
"The registry entry for " + REG_URL_SHORT + " does not exist!",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
{
tempKeyShort.CreateSubKey("TypedURLs",
RegistryKeyPermissionCheck.ReadWriteSubTree);
}
}
}
}
using (RegistryKey tempKey = Registry.CurrentUser.OpenSubKey(REG_URL))
{
if (tempKey == null)
{
System.Windows.Forms.MessageBox.Show(
"The registry entry for " + REG_URL + " does not exist!",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string[] vals = tempKey.GetValueNames();
int itemcounter = 0;
foreach (string url in vals)
{
object keyValue = tempKey.GetValue(url);
if (keyValue != null)
{
histlink hl = new histlink();
string entry = keyValue.ToString();
if (entry.Length != 0)
{
itemcounter++;
hl.Entry = entry;
hl.URL = url;
historylinks.Add(itemcounter, hl);
}
}
}
}
}
The second TabPage Cache shows the browser's cache.
On the one hand, there are the lots of cache files as mentioned above,
e.g. 30,667 MB in 7991 cache files. You can delete them by pressing the
button "Delete cache files". On the other hand, you can have some
insight into "index.dat" by pressing "Show Index.dat". As this file is locked by many processes, it's not easy to delete it. So I've implemented a function "DeleteCacheIndexDat
", which marks the file to be deleted on reboot (Button "Delete on reboot"). This function is a wrapper for MoveFileEx
:
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
privatestaticexternbool MoveFileEx(string lpExistingFileName,
string lpNewFileName, int dwFlags);
constint MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004;
MoveFileEx(fileName, null, MOVEFILE_DELAY_UNTIL_REBOOT);
You can store some of the links in your personal list. To do so,
select the links and press "Store selected". The lower listview on
TabPage "Browser's URLs history", which holds your personal links, will
be updated immediately.
The third TabPage History (Autofill) shows the browser's history, which is stored in a couple of "index.dat" files in your "Local Settings\History\History.IE5"
directory and subdirectories. The links in these directories are
responsible for the autofill mechanism in your browser's dropdown list.
Some of these files (the older ones) can be deleted immediately, the
others have to be deleted by means of "MoveFileEx
". Use the buttons "Show history" and "Delete on reboot" to watch and delete the links.
You can also, as described above, store some links to your personal URL list.
The fourth TabPage Cookies shows your cookies. They are both stored in a file "index.dat" in your "Cookies" directory and as single .txt-files, each of them representing one cookie. Again, the "index.dat" can only be deleted on reboot, but the ".txt"
cookie files can be deleted one by one. If you press "Show cookie
files", the cookies and their third lines will be shown in the listview.
The third line contains the cookie's URL. Use the button "Delete on
reboot" to delete the cookie's index.dat file.
Again, you can overtake here some links to your personal URL list.
The fifth TabPage Recent list shows the list of the
files you recently used. These are not specific browser links, but they
are - sometimes - annoying too. You can get rid of them (or parts of
them) by selecting and pressing "Delete selected". By the way: these
links are on your "Recent" directory and have the suffix ".lnk".
The sixth TabPage Delete all gives you the
functionality to delete all that stuff at one go. You can reduce the
overall deleting by unchecking some of the items. The deletion progress
is shown by a progress bar.
Some Remarks on the Code
Not to have all the code in one large file, I've divided it up into
several parts, meaning that every TabPage has its own source file. You
can easily distinguish the parts, as they have the same name as the
TabPages. All these source files are part of the class Main
:
publicpartialclass Main : Form
The program has been tested on Microsoft XP with Internet Explorer
6.0 and 7.0 and on Vista Home Premium with Internet Explorer 7.0. I've
developed the solution with Visual Studio 2005, but it seems to work
with Visual Studio 2008 as well.
Outlook - what to do:
It would be nice, if somebody could help me
to show how a file, being locked by a couple of processes, can be
deleted immediately. This should be done especially for the index.dat files to avoid deletion on reboot.
History
- March 3rd, 2009 - First version
License
posted on 2011-06-10 15:18
jemmyLiu 阅读(149)
评论(0) 编辑 收藏 引用