C#獲取註冊表指定鍵值

        某些程序必須依賴指定運行環境。那麼讀取註冊表來判斷此電腦是否有執行環境是個很不錯的辦法。因爲每個軟件安裝之後都會在註冊表中註冊對應的鍵值,並且有些鍵值是獨一無二的。那麼首先就需要找到那個具體的獨一無二的鍵值,以便程序在運行之前能夠去讀取以判斷。代碼如下:

class Program
    {
        private static string _sValue = string.Empty;

        static void Main(string[] args)
        {
            Console.WriteLine("請輸入待查找值:");
            _sValue = Console.ReadLine();
            Console.WriteLine($"正在查詢。。。");

            var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
                    Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); //判斷機器位數
            int i = 0;
            GetKeyNames(registryKey, ref i);
            Console.WriteLine($"查詢結束。。。");
            Console.ReadKey();
        }

        /// <summary>
        /// 遍歷所有子項
        /// </summary>
        /// <param name="subkey">節點</param>
        /// <param name="i"></param>
        private static void GetKeyNames(RegistryKey subkey, ref int i)
        {
            foreach (var subkey_name in subkey.GetSubKeyNames()) // 檢索包含所有子項名稱的字符串數組
            {
                try
                {
                    using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name))
                    {
                        GetValueName(csubkey, ref i);
                        GetKeyNames(csubkey, ref i);
                    }
                }
                catch { }
            }
        }

        /// <summary>
        /// 若包含輸入值則輸出記錄
        /// </summary>
        /// <param name="subkey">節點</param>
        /// <param name="i"></param>
        private static void GetValueName(RegistryKey subkey, ref int i)
        {
            foreach (var name in subkey.GetValueNames()) //檢索包含與此項關聯的所有值名稱的字符串數組
            {
                var sValue = subkey.GetValue(name) + string.Empty;
                if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0)
                {
                    Console.WriteLine(++i + "\t" + subkey.Name);
                }
            }
        }
    }

現在查找含有E:\ArcGIS\Python27\ArcGISx6410.2\python.exe的鍵:

結果如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章