65.9K
CodeProject 正在变化。 阅读更多。
Home

从 Visual Studio 2003、2005 和 2008 的启动页面的“最近项目”列表中删除链接

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (19投票s)

2007年5月25日

CPOL
viewsIcon

63617

downloadIcon

430

此应用程序从 Visual Studio 2003/2005/2008 的启动页面的“最近项目”列表中删除链接。

Screenshot - ssdrp.jpg

引言

本文介绍了如何通过访问注册表键并执行删除和修改等操作,从 Visual Studio 2003/2005/2008 的启动页面的“最近项目”列表中删除链接。

背景

一段时间前,我想从“最近项目”列表中删除一些链接,但不知道该怎么做。我在网上搜索,找到了描述如何删除它们的文章,但它们都描述了一个手动过程:从“运行”中打开 Regedit,等等……因此,我决定编写一个小应用程序来自动化此任务。

代码

PopulateListView 方法

您可以使用此应用程序或源代码在您自己的应用程序中使用。

第一个方法用于填充表单中的 ListView

 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);
                }
            }
        }

DeleteRegKey 方法

您可以使用此应用程序或源代码在您自己的应用程序中使用。第二个方法用于在从 ListView 中选择一个项目或解决方案并单击 Delete 按钮后删除注册表键。

 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);
            }
        }

历史

  • 2007 年 5 月 25 日:初始发布
  • 2008 年 4 月 24 日:文章已更新
© . All rights reserved.