如题:
下面是操作代码,备注表示了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?
64位和32位有区别
机器的环境是windows server 2003 32位...
@Epic_Price: 你的读写路径有问题
@[秦时明月]:
那为什么同一个路径,
rk.GetValue("CurrentLevel");有值
rk.GetValue("1208");null
这个应该说明路径没问题把?
你打开注册表,对比一下看看路径有没有问题!
地址应该没错...
因为可以拿到(地址文件夹)中得部分值,
不能全部拿到。
@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();
@Albert Fei:
还是拿不到值,我做的事winform,
只是拿本机的就OK,
string v=rk.GetValue("1208").ToString();看看能不能取到。值为nall,这样会报错的。
顺便问一下,您的操作系统是?
@Albert Fei:
换一个方式问一下您,
什么情况下会导致我们无法获取到注册表的值?
@Epic_Price: 我操作系统是windows7, 我也是在win7上测试的。
如果"1208" 存在,应该能取到值。
至于什么情况下无法取到,还真的不太清楚。一般只要我的路径写对 都能取到,没有碰到取不到的情况。
@Albert Fei:
谢谢,发现问题的原因了。
因为我是在 win7 win8 的注册表中进行操作的,
但是放到了win server 2003中,他的注册表中并不存在这些key,例如:“1208”
server中有1207,1209,就是没有1208,所以一直是null...
@Epic_Price: 哈哈,早对一下win2003就早发现了。