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