C#注册表项及值为空测试
2021-02-20 17:22
标签:val ado 判断 each current readline body ati 出错 C#注册表项及值为空测试 标签:val ado 判断 each current readline body ati 出错 原文地址:https://www.cnblogs.com/x2009/p/8278950.html 1 static void Main(string[] args)
2 {
3 //不能以 \ 开头,否则返回null
4 RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"\Software");
5 Console.WriteLine(rk == null); //true
6
7 rk = Registry.CurrentUser.OpenSubKey(@"Software");
8 Console.WriteLine(rk == null); //false
9
10 rk = Registry.CurrentUser.OpenSubKey(@"Software\Adobe");
11 Console.WriteLine(rk.Name); //HKEY_CURRENT_USER\Software\Adobe
12
13 rk = Registry.CurrentUser.OpenSubKey(@"Software\Adobe");
14 Console.WriteLine(rk == null); //false
15
16 //值不存在,没有指定默认值,返回null
17 object obj1 = rk.GetValue("X2009");
18 Console.WriteLine(obj1 == null); //true
19
20 //项不存在返回null
21 rk = Registry.CurrentUser.OpenSubKey(@"Software\X2009");
22 Console.WriteLine(rk == null); //true
23
24 //--------------------------------------------------
25
26 //项存在,值不存在,返回默认值
27 object obj = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Adobe", "KEY", "VALUE");
28 Console.WriteLine((string)obj == "VALUE"); //true
29
30 //项不存在返回null
31 obj = Registry.GetValue(@"HKEY_CURRENT_USER\Software\X2009", "KEY", "VALUE");
32 Console.WriteLine(obj == null); //true
33
34 //--------------------------------------------------
35
36 //Software\Adobe\IAC 项存在,子项不存在
37 rk = Registry.CurrentUser.OpenSubKey(@"Software\Adobe\IAC");
38 Console.WriteLine(rk == null); //false
39 string[] arr = rk.GetSubKeyNames();
40 Console.WriteLine(arr == null); //false
41 Console.WriteLine(arr.Length == 0); //true
42
43 //遍历一个空数组不会出错
44 string[] ss = new string[0];
45 foreach (string s in ss) { }
46
47 //遍历一个null数组会出错
48 ss = null;
49 //foreach (string s in ss) { } //System.NullReferenceException
50
51 //总结:
52 //OpenSubKey 打开子项不能以 \ 开头
53 //OpenSubKey、Registry.GetValue、RegistryKey.GetValue 当其项不存在时返回null
54 //Registry.GetValue 当其值不存在时返回默认值或null
55 //以上两条可以判断注册表的项或值是否存在
56 //GetSubKeyNames 当子项不存在时返回空数组而非null
57
58 Console.ReadLine();
59 }
下一篇:Curator 基本API