Как правильно прочитать значение реестра в 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");