Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 使用opensubkey并更改该子键时,RegistryKey出现问题_C# - Fatal编程技术网

C# 使用opensubkey并更改该子键时,RegistryKey出现问题

C# 使用opensubkey并更改该子键时,RegistryKey出现问题,c#,C#,好吧,我有这个问题,我真的不明白为什么。虽然我知道我可以改变整个文本,但我只是想更好地理解为什么会发生这种情况。假设我正在打开一个子键 RegistryKey regkey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, workstation, RegistryView.Registry64).OpenSubKey(@"Software\Censored\Issuance\test\", true); 这将很好,我可以设置

好吧,我有这个问题,我真的不明白为什么。虽然我知道我可以改变整个文本,但我只是想更好地理解为什么会发生这种情况。假设我正在打开一个子键

RegistryKey regkey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, workstation, RegistryView.Registry64).OpenSubKey(@"Software\Censored\Issuance\test\", true);
这将很好,我可以设置/获取键值等,但我需要移动到另一个子键为什么我不能这样做

regkey= regkey.opensubkey(@"\Software\something\somewhere\youknow");
然后从新位置开始设置或获取值?任何帮助都将不胜感激

我试图搜索一个类似的帖子,但似乎之前没有人问过这件事。对不起,如果这是一个骗局

RegistryKey regkey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, workstation, RegistryView.Registry64)
                     .OpenSubKey(@"Software\Censored\Issuance\test\", true);

regkey = regkey.opensubkey(@"Foo");
这将在
Software\censtered\ission\test\Foo

从非子项的项读取


您是否缺少第二个参数来启用对该注册表项的编辑?是的,但这是一个示例,我甚至无法读取注册表值。老实说,您甚至无法读取注册表项。从该lol中读取getkeynames(),如果您使用的任何路径不存在,它将返回null,尽管它确实存在,因为如果我重置它,使用
regkey=RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine,workstation,RegistryView.Registry64).OpenSubKey(@“Software\somewhere\someplace\youknow\”,true)然后它将再次工作。让我抓狂lol
\Software\something\where\youknown
大概不是
\Software\censtered\issued\test
的子键-它是根目录的路径。存储
OpenRemoteBaseKey
中的
RegistryKey
并调用它。此问题与实际路径无关,除非在设置了opensubkey之后,在使用之后的任何内容都试图再向前移动一步,如果是这样的话,如何重置它呢?只要我留在openremotebasekey中定义的HKLM,我相信
@“\software\where”
将是其中的一个“子键”,所以这仍然不能回答我为什么的问题,为什么不允许我在不需要的情况下切换子项而不必将两个不同的对象定义为注册表项?但是您不在HKLM中,因为您的
注册表项
已显式打开
软件\censtered\ission\test\“
-您”过去了“
OpenRemoteBaseKey
并在调用
OpenSubKey
时链接,我假设一旦打开一个键,该键将成为注册表视图的“根”。你可以打开该键的子键,但你不能返回到原始根并选择不同的路径。我认为你击中了要害steve。。。这很烦人,因为它需要另一行代码。哦,好吧。谢谢各位
RegistryKey baseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, workstation, RegistryView.Registry64);

RegistryKey regkey = baseKey.OpenSubKey(@"Software\Censored\Issuance\test\", true);
            ...
            regkey = baseKey.OpenSubKey(@"Software\something\somewhere\youknow", true);