Here is my c# code:
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", 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");
}
So what is happening here is that I am getting an error
System.NullReferenceException
on the line
key.CreateSubKey("NetworkThrottlingIndex");
because the key is null.
I checked several times but this key is present in my registry editor.
Any idea about what is wrong here?
The SOFTWARE registry key is redirected depending on the bitness of your application and Windows.
To access your key via a x86/32bit EXE (on 64 bit Windows) request the 64 bit Registry View:
using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
...
}
Also note that NetworkThrottlingIndex
is a sub-key (i.e. a "Folder") and thus you cannot set its value as it has none. Additionally you would use hex literals for the DWORD values (0x0000000a
) rather that strings.