1. 程式人生 > >C#註冊表項及值為空測試

C#註冊表項及值為空測試

lin 判斷 class sys foreach name object gis for

 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#註冊表項及值為空測試