這篇文章給大家介紹利用C#怎么對注冊表建獲取并指定鍵值,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、周村網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為周村等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。某些程序必須依賴指定運(yùn)行環(huán)境。那么讀取注冊表來判斷此電腦是否有執(zhí)行環(huán)境是個(gè)很不錯(cuò)的辦法。因?yàn)槊總€(gè)軟件安裝之后都會(huì)在注冊表中注冊對應(yīng)的鍵值,并且有些鍵值是獨(dú)一無二的。
那么首先就需要找到那個(gè)具體的獨(dú)一無二的鍵值,以便程序在運(yùn)行之前能夠去讀取以判斷。
代碼如下:
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); //判斷機(jī)器位數(shù) int i = 0; GetKeyNames(registryKey, ref i); Console.WriteLine($"查詢結(jié)束。。。"); Console.ReadKey(); } ////// 遍歷所有子項(xiàng) /// /// 節(jié)點(diǎn) /// private static void GetKeyNames(RegistryKey subkey, ref int i) { foreach (var subkey_name in subkey.GetSubKeyNames()) // 檢索包含所有子項(xiàng)名稱的字符串?dāng)?shù)組 { try { using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name)) { GetValueName(csubkey, ref i); GetKeyNames(csubkey, ref i); } } catch { } } } ////// 若包含輸入值則輸出記錄 /// /// 節(jié)點(diǎn) /// private static void GetValueName(RegistryKey subkey, ref int i) { foreach (var name in subkey.GetValueNames()) //檢索包含與此項(xiàng)關(guān)聯(lián)的所有值名稱的字符串?dāng)?shù)組 { var sValue = subkey.GetValue(name) + string.Empty; if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0) { Console.WriteLine(++i + "\t" + subkey.Name); } } } }