繁体   English   中英

使用SetValue时未创建注册表项

[英]Registry Keys not being created when using SetValue

我正在编写的程序使用许多注册表项来存储一些重要信息。 为了确保所有注册表项都存在于程序的第一种方法中,我测试了注册表项是否存在,并在不使用默认值的情况下创建了注册表项。

这是我的代码:

 RegistryKey RK = Registry.LocalMachine.OpenSubKey("Software");

        if (RK.OpenSubKey("NR") == null)
            RK.CreateSubKey("NR");
        RK = RK.OpenSubKey("NR");

        if (RK.OpenSubKey("P") == null)
            RK.CreateSubKey("P");
        RK = RK.OpenSubKey("P");

        if (RK.GetValue("BP") == null)
            RK.SetValue("BP", "B{1}-{0}");

问题是,即使我在没有这些密钥的计算机上运行此命令,也不会创建它们。 该程序设置为始终以管理员身份运行,并且在Windows XP计算机上运行。 因此,使用SubKey NR \\ P上方的代码存在,但BP不存在,在运行此代码后,BP仍然不存在。 谁能看到错在哪里?

RK必须以写访问权限打开:

RK = RK.OpenSubKey("P",true);

没有第二个参数,它是只读的。

调用SetValue时,需要使用正确的OpenSubKey方法打开用于写入的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM