首页新闻找找看学习计划

无法获取注册表中subkey的value

0
悬赏园豆:10 [已关闭问题] 关闭于 2017-07-14 08:08

如题:

下面是操作代码,备注表示了Debug中得出的值;

 1 RegistryKey rk;
 2             //IE检测
 3             //版本
 4             rk = Registry.LocalMachine.OpenSubKey("software\\Microsoft\\Internet Explorer");
 5 
 6            //6.0.......
 7             string IEVersion = "当前IE浏览器的版本信息:" + (String)rk.GetValue("Version");
 8 
 9             //安全级别
10             rk = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3");
11 
12             //70912:安全级别中-高
13          rk.GetValue("CurrentLevel");
14 
15             //值为NULL,注册表中value =3
16             rk.GetValue("1208");
17             rk.Close();
18             


请问为什么rk.GetValue("1208");得到的结果只是null?

seaconch的主页 seaconch | 老鸟四级 | 园豆:4823
提问于:2013-09-13 09:58
< >
分享
所有回答(2)
0

64位和32位有区别

【秦时明月】 | 园豆:803 (小虾三级) | 2013-09-13 10:10

机器的环境是windows server 2003 32位...

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 10:16

@Epic_Price: 你的读写路径有问题

支持(0) 反对(0) 【秦时明月】 | 园豆:803 (小虾三级) | 2013-09-13 10:17

@[秦时明月]: 

那为什么同一个路径,

 rk.GetValue("CurrentLevel");有值
 rk.GetValue("1208");null

这个应该说明路径没问题把?

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 10:36
0

你打开注册表,对比一下看看路径有没有问题!

Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-13 10:35

地址应该没错...

因为可以拿到(地址文件夹)中得部分值,

不能全部拿到。

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 11:03

@Epic_Price:  你是调试的时候拿不到吗,还是放到服务器上拿不到。 

你确定你的这句 rk.GetValue("1208");返回的是null?

我在调试时,能取到值。你也可以像我这样输出来看看,要是不是在控制台下你就用

string v=rk.GetValue("1208").ToString();看看能不能取到。

RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3");
            //70912:安全级别中-高
            object cl = rk.GetValue("CurrentLevel");
            Console.WriteLine(cl.ToString());
 
            //值为NULL,注册表中value =3
            object cl2= rk.GetValue("1208");
            Console.WriteLine(cl2.ToString()+"__"+cl2.GetType().ToString());
            rk.Close();

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-13 11:24

@Albert Fei: 

还是拿不到值,我做的事winform,

只是拿本机的就OK,

string v=rk.GetValue("1208").ToString();看看能不能取到。值为nall,这样会报错的。

顺便问一下,您的操作系统是?

 

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 11:43

@Albert Fei: 

换一个方式问一下您,

什么情况下会导致我们无法获取到注册表的值?

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 11:45

@Epic_Price: 我操作系统是windows7, 我也是在win7上测试的。

如果"1208" 存在,应该能取到值

至于什么情况下无法取到,还真的不太清楚。一般只要我的路径写对 都能取到,没有碰到取不到的情况。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-13 13:59

@Albert Fei: 

谢谢,发现问题的原因了。

因为我是在 win7 win8 的注册表中进行操作的,

但是放到了win server 2003中,他的注册表中并不存在这些key,例如:“1208”

server中有1207,1209,就是没有1208,所以一直是null...

支持(0) 反对(0) seaconch | 园豆:4823 (老鸟四级) | 2013-09-13 14:04

@Epic_Price: 哈哈,早对一下win2003就早发现了。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-13 14:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册