C# 未创建注册表项

C# 未创建注册表项,c#,registry,C#,Registry,我在创建/删除当前用户的密钥时没有遇到任何问题,但是每当我尝试LocalMachine时,都不会发生任何事情。我已经在app.manifest中添加了(“requestedExecutionLevel=“requireAdministrator”uiAccess=“false”)。我缺少什么吗 private void button1_Click(object sender, EventArgs e) { RegistryKey rKey; rKe

我在创建/删除当前用户的密钥时没有遇到任何问题,但是每当我尝试LocalMachine时,都不会发生任何事情。我已经在app.manifest中添加了
(“requestedExecutionLevel=“requireAdministrator”uiAccess=“false”)
。我缺少什么吗

    private void button1_Click(object sender, EventArgs e)
    {
        RegistryKey rKey;
        rKey = Registry.LocalMachine.OpenSubKey("Software", true);
        rKey.DeleteSubKey("test", true);
        rKey.Close();            
    }

    private void button2_Click(object sender, EventArgs e)
    {
        RegistryKey rKey;
        rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
        rKey.CreateSubKey("test");
        rKey.Close();
    }

如上所述,出于兼容性原因,64位Windows上的32位应用程序将
HKLM\SOFTWARE
内的
HKLM\SOFTWARE\Wow6432Node
键虚拟化

如果您希望在
HKLM\SOFTWARE
中实际创建密钥,则需要将应用程序重建为64位


然而,在我看来,只要您能够实际加载和保存密钥,密钥实际存储在何处并不重要。

如果您正在寻求调试帮助,那么查看工作方法、非工作方法以及不工作内容的描述(例如,您没有在任何地方检查
null
).Wild guess-。我将尝试看似合理的64位解决方案。但工作方法只是将LocalMachine替换为CurrentUserName。您确定密钥存在吗?@user6722600创建应用程序的64位版本。64位Windows上的32位应用程序将其HKLM\软件密钥虚拟化在Wow6432Node密钥中。您真的不应该这样做调用
.Close()
,应该使用
使用(RegistryKey-rKey=Registry.LocalMachine.OpenSubKey(“SOFTWARE”,true)){rKey.CreateSubKey(“test”);}
因此,即使出现错误,对象也将被处理。忽略上一篇文章我只是太傻了,忘了检查一些东西。请对他的所有文章进行投票,并将其添加到答案列表中。非常感谢您的帮助!