Как правильно прочитать значение реестра в C#

Я создал ключ типа строки и назвал его mykey в реестре на HKEY_USERS\.DEFAULT со значением, установленным на 1234,

У меня есть приложение Windows Form с кнопкой на нем.

Я хочу увидеть ценность mykey в MessageBox при каждом нажатии кнопки. Как я могу этого достичь?

Это то, что я сделал. Но этот код только показывает HKEY_USERS в MessageBox, а не значение mykey,

private void button1_Click(object sender, EventArgs e)
    {
        RegistryKey rk = Registry.Users;
        rk.GetValue("HKEY_USERS\\.DEFAULT\\mykey");

        if (rk == null)
            MessageBox.Show("null");
        else
            MessageBox.Show(rk.ToString());
    }

2 ответа

Решение

Вы указали User два раза, но вы должны сделать что-нибудь из этого, вот безопасный способ прочитать значение реестра

private void button1_Click(object sender, EventArgs e)
    {
        using (RegistryKey key = Registry.Users.OpenSubKey(".DEFAULT"))
        {
            if (key != null)
            {
                Object val = key.GetValue("mykey");
                if (val != null)
                {
                    MessageBox.Show(val.ToString());
                }
                else
                {
                   MessageBox.Show("Null");
                }
            }

        }
    }

Вы указываете Users расстаться дважды. Сначала как куст реестра, а затем как раздел реестра.

Вы можете удалить его из последнего:

rk.GetValue(@".DEFAULT\mykey");

Или вы должны начать с реестра без выбора улья:

Registry.GetValue(@"HKEY_USERS\.DEFAULT\mykey");
Другие вопросы по тегам