Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我添加了一个注册表项,但无法通过编程方式找到它_C#_Registry_Registrykey - Fatal编程技术网

C# 我添加了一个注册表项,但无法通过编程方式找到它

C# 我添加了一个注册表项,但无法通过编程方式找到它,c#,registry,registrykey,C#,Registry,Registrykey,因此,我使用RegEdit将以下内容添加到工作站上的注册表中: HKLM\Software\Foo\Bar 酒吧有一个k/v对“wtf”/“idk”。我通过关闭regedit并重新打开它来验证这些更改是否“生效”。嘿,他们还在那儿!膨胀 RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar"); if (key != null) { var = key.GetValue("wtf").ToString

因此,我使用RegEdit将以下内容添加到工作站上的注册表中:

HKLM\Software\Foo\Bar

酒吧有一个k/v对“wtf”/“idk”。我通过关闭regedit并重新打开它来验证这些更改是否“生效”。嘿,他们还在那儿!膨胀

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}
问题是,密钥为空

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()
调用时,Foo不会出现在多个子关键字中


所以,我显然错过了一些愚蠢的事情。我具体遗漏了什么?

可能是x64问题?在x86进程中从注册表读取数据时,系统会将您重定向到软件\wow6432节点。

如果您在64位版本的Windows上运行32位进程,则32位进程(您的测试应用程序)并不总是能够看到您使用64位regedit创建的键

尝试以64位方式运行应用程序,或使用regedit使用路径
HKLM\SOFTWARE\Wow6432Node\Foo\Bar
打开密钥


您可以在MSDN上阅读更多信息。

尝试以只读方式打开它。Registry.LocalMachine.OpenSubKey(“Software”,false)。GetSubKeyNames()可能您只获得了可以写入的内容。

您和Reizebosch是正确的;这是一个x64操作系统,但该程序以32位应用程序的形式运行,并且它是从Wow6432Node读取的;我可以给钥匙写信。