我如何在c#中获得注册表值名称并将其放在列表框中

本文关键字:列表 注册表 | 更新日期: 2023-09-27 18:03:10

我想在"Software'Microsoft'Windows'CurrentVersion'Explorer'RunMRU"中获得所有值然后放到列表框

我如何在c#中获得注册表值名称并将其放在列表框中

再次编辑Windows窗体

下面是完整的清单,假设您有一个id为"lbKeys"的ListBox:

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.UI;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            RegistryKey myKey = Registry.CurrentUser.OpenSubKey(@"Software'Microsoft'Windows'CurrentVersion'Explorer'RunMRU");
            // Check to see if there were any subkeys
            if (myKey.SubKeyCount > 0)
            {
                foreach (string subKey in myKey.GetSubKeyNames())
                {
                    lbKeys.Items.Add(subKey);
                }
            }
        }
}

您正在查看的键可能没有任何子键-在我给您的前面的代码中,foreach循环不会做任何事情,因为没有什么可循环的

使用OpenSubKey打开Software'Microsoft'Windows'CurrentVersion'Explorer'RunMRU,然后调用GetSubKeyNames获取子键的名称。这是一个很好的例子。

我认为把它们放在ListBox中是相当容易的任务。

RegistryKey keys Registry.CurrentUser.OpenSubKey(@"Software'Microsoft'Windows'CurrentVersion'Explorer'RunMRU");
foreach (string subKeyName in keys.GetSubKeyNames())
{
    using(RegistryKey tempKey = keys.OpenSubKey(subKeyName))
            {
                Console.WriteLine("'nThere are {0} values for {1}.", 
                    tempKey.ValueCount.ToString(), tempKey.Name);
                foreach(string valueName in tempKey.GetValueNames())
                {
                    Console.WriteLine("{0,-8}: {1}", valueName, 
                        tempKey.GetValue(valueName).ToString());
                }
            }
}