zhuwt2008
zhuwt2008
采纳率95.1%
2018-07-05 16:25 阅读 801

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

5

下面代码写入注册表项,运行没有报错,但是打开注册表,没有找到任何新增的注册表目录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条回答 默认 最新

  • 已采纳
    littlejade1214 毛线一团 2018-07-06 02:44

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

    点赞 评论 复制链接分享
  • zhuwt2008 zhuwt2008 2018-07-09 15:43

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

    点赞 评论 复制链接分享

相关推荐