C#注册表项及值为空测试

2021-02-20 17:22

阅读:758

标签:val   ado   判断   each   current   readline   body   ati   出错   

 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         }

 

C#注册表项及值为空测试

标签:val   ado   判断   each   current   readline   body   ati   出错   

原文地址:https://www.cnblogs.com/x2009/p/8278950.html


评论


亲,登录后才可以留言!