一个非常奇怪的问题,C#读写注册表没有效果,哪位高手能帮忙?

下面代码写入注册表项,运行没有报错,但是打开注册表,没有找到任何新增的注册表目录XXXX及key:
try
{
using (var rkSoftware = Registry.LocalMachine.OpenSubKey("Software"))
using (var rkkey = rkSoftware.OpenSubKey("XXXX", true))
{
rkkey.SetValue("key", "123");
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "发生错误");
}
但是用下面C#代码读取刚新增的注册表项,可以得到正常的值:
try
{
using (var rkSoftware = Registry.LocalMachine.OpenSubKey("Software"))
using (var rkkey = rkSoftware.OpenSubKey("XXXX", false))
{
key1 = rkkey.GetValue("key").ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "发生错误");
}

非常奇怪,问题是我打开注册表,到处查找,任何地方都没有新增的注册表项XXXX呀,但是怎么程序又能读取出来呢?我的系统是win8.1,系统用户是非administrator的管理员用户。win7我也试了,系统用户是administrator,测试没有刚才问题。请教高手这是什么原因,如何规避?因为我写入的注册表项不只给C#程序查看,其他程序(如C++)也同样需要查看,而这个问题却导致我只能用C#才能查到正确的值,不能满足需求,请教如何解决呢?望有高手不啬帮忙赐教!感激不尽!(问题解决了加20分)

2个回答

我可以理解成你的RSA秘钥是公用的嘛

zhuwt2008
zhuwt2008 可以说你是猜得很准的,这个代码和加密有关。问题是我C#写入的注册表项不能看到也不能给C++读取到,只能给C#读取到。
接近 2 年之前 回复

不用C#写注册表了,干脆都用C++

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐