Попытка вернуть значения в раздел реестра - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в запросах реестра, поэтому терпите мое невежество.

Мне трудно понять, почему число значений, возвращаемых из .GetValueNames (), не соответствует .ValueCount. ValueCount возвращает 7, но список, созданный GetValueNames, содержит 25 значений.

    static void Main()
    {
        RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"..mypath");
        string[] nameList = regKey.GetSubKeyNames();
        string parentKey = "xxx";

        // Create a list of strings to put registry key values into
        List<string> oRegNameList = new List<string>();
        string[] oSubKeyList = new string[]{};

        if (nameList.Count() == 0)
        {
            MessageBox.Show("No registry key was found for that");
        }
        else
        {   
            foreach (string keyname in regKey.GetSubKeyNames())
            {
                try
                {
                    using (RegistryKey key = regKey.OpenSubKey(keyname))
                    {
                        if (keyname.Contains(parentKey))
                           MessageBox.Show("Registry key found : " + key.Name + " contains " + key.ValueCount + " values");
                        {
                            oRegNameList.Add(key.Name);
                            oSubKeyList = key.GetValueNames();
                        }
                    }
                }
                catch (System.Security.SecurityException)
                {
                }
            }
        }

        int keyVal = 1;
        foreach (string oSubKeyName in oSubKeyList)
        {
            MessageBox.Show("Key " + keyVal + " = " + oSubKeyName);
            keyVal++;
        }
...