为什么注册表项在C#中显示为null,即使它存在于注册表编辑器中



这是我的c#代码:

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWAREMicrosoftWindows NTCurrentVersionMultimediaSystemProfile",  true))
{
key.CreateSubKey("NetworkThrottlingIndex");
key.SetValue("NetworkThrottlingIndex", "0000000a", RegistryValueKind.DWord);
key.CreateSubKey("SystemResponsiveness");
key.SetValue("SystemResponsiveness", "00000000", RegistryValueKind.DWord);
key.CreateSubKey("NoLazyMode");
key.SetValue("NoLazyMode", "1");
}

所以这里发生的是,我得到了一个错误

系统。NullReferenceException

在线

key.CreateSubKey("NetworkThrottlingIndex");

因为密钥为null。

我检查了好几次,但这个键存在于我的注册表编辑器中。

你知道这里出了什么问题吗?

SOFTWARE注册表项会根据应用程序和Windows的大小进行重定向。

要通过x86/32位EXE(在64位Windows上(访问您的密钥,请请求64位注册表视图:

using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey(@"SOFTWAREMicrosoftWindows NTCurrentVersionMultimediaSystemProfile", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
...
}

还要注意,NetworkThrottlingIndex是一个子键(即">文件夹"(,因此您不能设置其值,因为它没有。此外,您将使用十六进制文字作为DWORD值(0x0000000a(,而不是字符串。

相关内容

最新更新