我有一个WOW场景,想要在
更改Key的值HKLM \ SOFTWARE \微软\ ABCD \
我正在使用此代码:
String key = @"SOFTWARE\Microsoft\ABCD\";
RegistryKey reg64key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey reg_64bit_Name = reg64key.OpenSubKey(key);
reg_64bit_Name.SetValue("Name","ahsan");
然而这不起作用。任何人都可以建议我需要做什么吗?
NB: 1.不工作意味着我在运行应用程序时遇到以下异常:
System.NullReferenceException: Object reference not set to an instance of an object.
答案 0 :(得分:1)
首先,通过"这不起作用"你能描述一下错误信息,例外编译错误吗?
据说你的代码已经
了reg64key.SetValue("Key","ahsan");
您将看到您正在使用"Key"
(作为字符串)。尝试将此更改为。
reg64key.SetValue(key,"ahsan");
因此,您使用的是变量而不是字符串"Key"
编辑:OP改变后
编辑完毕后,我回去试试这个。请参阅下面的代码(经过测试)
RegistryKey reg64key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
String key = @"SOFTWARE\Microsoft\ABCD";
if (reg64key == null)
throw new Exception("reg64key");
var basekey = reg64key.OpenSubKey(key);
if (basekey == null)
basekey = reg64key.CreateSubKey(key);
basekey.SetValue("Name", "ahsan");
您将从代码中看到,我们要做的第一件事就是抓住reg64key
HKLM
。接下来我们检查reg64key
是否为空(不应该为null,但你永远不知道)。接下来,我们使用reg64key
打开密钥"SOFTWARE\Microsoft\ABCD"
。如果找不到(baseKey == null
),那么我们创建密钥。
最后,您可以根据需要设置密钥。
希望这有帮助。