C#中如何正确读取注册表值

How to read registry value correctly in C#

我创建了一个字符串类型的密钥,并在 HKEY_USERS\.DEFAULT 的注册表中将其命名为 mykey,并将值设置为 1234

我有一个 windows 表单应用程序,上面有一个按钮。

我想在按下按钮时在 MessageBox 中看到 mykey 的值。我怎样才能做到这一点?

这就是我所做的。但是此代码仅在 MessageBox 中显示 HKEY_USERS 而不是 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());
    }

您指定了 Users 部分两次。首先作为注册表的配置单元,然后作为注册表项。

您可以将其从后者中删除:

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

或者您应该从注册表开始而不选择配置单元:

Registry.GetValue(@"HKEY_USERS\.DEFAULT\mykey");

您已指定 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");
                }
            }

        }
    }