C# 无法在C中设置注册表值#

C# 无法在C中设置注册表值#,c#,registry,C#,Registry,我有一个名为system\u module的windows窗体应用程序。我希望它能用windows启动。这是我的代码 private void Form1_Load(object sender, EventArgs e) { string keyName = @"Software\\Microsoft\\Windows\\CurrentVersion\\Run"; using (RegistryKey key = Registry.CurrentUser

我有一个名为
system\u module
的windows窗体应用程序。我希望它能用windows启动。这是我的代码

private void Form1_Load(object sender, EventArgs e)
    {

        string keyName = @"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
        using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
        {
            if (key == null)
            {
                // Key doesn't exist.
                key.SetValue("system_module", "Application Location");
            }
            else { }
        }
    }
但这并不是在运行中创造价值/ 我搜索了整个注册表,除了一些不相关的值外,没有发现任何与system_模块相关的内容

另外,我对注册的事情不太了解。对不起,如果我的术语是错误的。希望你能理解我想要表达的意思。
我在这个网站的其他问题中找到了上面的代码。我不知道这为什么不起作用

您没有使用SetValue()-因为“Run”键存在

使用:

并处理key==null以添加Run键(默认情况下该键存在)


如果你不想修改密钥,如果你的“系统模块”、“应用程序位置”已经存在,你必须查询“密钥”下的值,如果(key==null){key.SetValue…}是个坏主意。如果它不存在,则添加它,不设置不存在的键的值。我认为如果它不存在,Setvalue将创建该键。非常感谢。它将抛出NullReferenceException,因为您无法调用不存在的对象的方法。好的。我现在明白了。谢谢我还有一个问题。setvalue()是否更新了存在的值?@emperueuraiman-Yes setvalue()更新了值!-顺便说一句:如果这个答案对你有帮助,请把它标记为解决方案
if (key != null)
        {
            // Key doesn't exist.
            key.SetValue("system_module", "Application Location");
        }