Introduction
This article describes how to delete links from the Recent Projects list in the Start page of Visual Studio 2003/2005/2008, by accessing registry keys and doing some operations like delete and changing them.
Background
Some time ago, I wanted to eliminate some links from the Recent Projects list and I did not know how to do that. Searching the Web, I found articles describing how to delete them, but they all described a manual process: Open Regedit from Run..., etc.... So, I decided to write a small application to automate this task.
The Code
The PopulateListView Method
You could use this application or source code in your own application.
The first method is used to populate a ListView
in a Form
.
private void PopulateListView(string versaoVS)
{
RegistryKey regKey = Registry.CurrentUser;
regKey = regKey.OpenSubKey
("Software\\Microsoft\\VisualStudio\\" + versaoVS + "\\ProjectMRUList");
lstvRecentProjects.Items.Clear();
if (regKey == null) return;
foreach (string keyname in regKey.GetValueNames())
{
try
{
ListViewItem item = new ListViewItem();
item.Checked = false;
string kname = keyname;
string value = (String)regKey.GetValue(kname);
RegistryValueKind valuekind = regKey.GetValueKind(kname);
lstvRecentProjects.SmallImageList = imgList;
item.Text = ReturnTexto(value);
item.Tag = valuekind;
item.SubItems.Add(value);
item.ImageIndex = ReturnImageIndex(item.Text);
lstvRecentProjects.Items.Add(item);
lstvRecentProjects.Refresh();
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message +
"\r\nPlease report this Exception, " +
"mail to carlosaraiva@gmail.com!", "Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
The DeleteRegKey Method
You could use this application or source code in your own application. The second method is used to delete a registry key after selecting a project or solution in the ListView
and clicking the Delete
button.
private void DeleteRegKey()
{
string versaoVS = null;
if (rdbVS2003.Checked)
versaoVS = "7.1";
if (rdbVS2005.Checked)
versaoVS = "8.0";
if (rdbVS2008.Checked)
versaoVS = "9.0";
try
{
RegistryKey regKey = Registry.CurrentUser;
regKey = regKey.OpenSubKey("Software\\Microsoft\\VisualStudio\\" +
versaoVS + "\\ProjectMRUList", true);
bool delete = false;
string name = "File";
if (regKey == null) return;
foreach (ListViewItem item in lstvRecentProjects.Items)
{
if (item.Checked)
{
delete = true;
lstvRecentProjects.Items.Remove(item);
foreach (string keyname in regKey.GetValueNames())
{
regKey.DeleteValue(keyname);
}
}
}
if (delete)
{
lstvRecentProjects.Refresh();
foreach (ListViewItem item in lstvRecentProjects.Items)
{
int key = item.Index + 1;
string keyname = name + key.ToString();
regKey.SetValue(keyname, item.SubItems[1].Text,
(RegistryValueKind)item.Tag);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message +
"\r\nPlease report this Exception, " +
"mail to carlosaraiva@gmail.com!", "Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
History
- 25th May, 2007: Initial post
- 24th April, 2008: Article updated