根据其中一个值删除注册表项?

时间:2012-12-21 02:09:35

标签: c# registry

我正在开发一个简单的应用程序来从注册表中删除用户个人资料条目,但我遇到了一个问题。

首先,我通过以下代码获取ProfileList中的所有子键:

List<string> KeyList = new List<string>();

        RegistryKey ProfileList = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\Windows NT\\CurrentVersion\\ProfileList\\");
        foreach (string ProfileKey in ProfileList.GetSubKeyNames())
        {
            KeyList.Add(ProfileKey);
        }

从那里,我得到每个密钥的ProfileImagePath值并将它们添加到一个选中的列表框中:

KeyList.ForEach(delegate(string ProfileKey)
        {
            ProfileList = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\Windows NT\\CurrentVersion\\ProfileList\\" + ProfileKey + "\\");
            checkedListBox1.Items.Add(ProfileList.GetValue("ProfileImagePath").ToString());
        });

然后,当用户单击删除按钮时,我希望应用程序删除已检查的用户配置文件。但是,我必须获取每个已检查项目的值(看起来像C:/ Users / Name)并确定要删除的注册表项。我假设我可以在foreach循环中执行此操作,但我不太清楚如何。 这样做的最佳方法是什么? 感谢。

1 个答案:

答案 0 :(得分:2)

你走了。当用户单击“删除所选用户”等按钮时,您可以执行此代码。这是代码的shell:

string[] CheckItemsArray = new string[checkedListBox1.CheckedItems.Count+1];
        checkedListBox1.CheckedItems.CopyTo(CheckItemsArray, 0);

        foreach (string CheckedItem in CheckItemsArray)
        {
            if (CheckedItem != null)
            {
                //your deleting logic here

            }
        }