国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[No000005]C#注冊表操作,創建,刪除,修改,判斷節點是否存在

2019-11-14 15:55:51
字體:
來源:轉載
供稿:網友
//用.NET下托管語言C#操作注冊表,主要內容包括:注冊表項的創建,打開與刪除、鍵值的創建(設置值、修改),讀取和刪除、判斷注冊表項是否存在、判斷鍵值是否存在.//準備工作://1:要操作注冊表,我們必須要引入必要的命名空間:using Microsoft.Win32;在這個命名空間里面包含了許多注冊表相關的類,足夠我們使用了.//2:命名空間里面提供了一個類:RegistryKey 利用它我們可以定位到注冊表最開頭的分支:ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig(分別代表HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG根鍵)如:RegistryKey key = Registry.LocalMachine;//3:在操作的過程中涉及到子分支,要用全路徑進行open深入,單個子鍵名會報錯!//4:最后要調用RegistryKey對象的Close()關閉對注冊表的修改。//5:以下我們的例子都是在LocalMachine分支下,請注意.//一:注冊表項的創建,打開與刪除//1:創建://創建注冊表項主要用到RegistryKey 的CreateSubKey()方法.如:            RegistryKey key = Registry.LocalMachine;            RegistryKey softwareSubKey = key.CreateSubKey("SOFTWARE//MYTEST");//在HKEY_LOCAL_MACHINE/SOFTWARE下新建名為MYTEST的注冊表項.如果已經存在則不影響!,其他路徑下(出SOFTWARE)建立可能沒有權限!//2:打開://打開注冊表項主要用到RegistryKey 的OpenSubKey()方法.如://RegistryKey key = Registry.LocalMachine;            RegistryKey subkeyMYTEST = key.OpenSubKey("SOFTWARE//MYTEST", true);//注意該方法后面還可以有一個布爾型的參數,true表示可以寫入.//注意,如果該注冊表項不存在,這調用這個方法會拋出異常//3:刪除://刪除注冊表項主要用到RegistryKey 的DeleteSubKey()方法.如://RegistryKey key = Registry.LocalMachine;//key.DeleteSubKey("SOFTWARE//MYTEST", true); //該方法無返回值,直接調用即可//key.Close();//注意,如果該注冊表項不存在,這調用這個方法會拋出異常//二:鍵值的創建(設置值、修改),讀取和刪除//1:創建(設置值、修改)://對鍵值的創建修改等操作主要用到RegistryKey 的SetValue()方法//RegistryKey key = Registry.LocalMachine;            RegistryKey software = key.OpenSubKey("SOFTWARE//MYTEST", true); //該項("SOFTWARE//MYTEST")必須已存在            software.SetValue("test", "");//在HKEY_LOCAL_MACHINE/SOFTWARE/MYTEST"下創建一個名為“test”,值為“園”的鍵值.如果該鍵值原本已經存在,則會修改替換原來的鍵值,如果不存在則是創建該鍵值.//注意:SetValue()還有第三個參數,主要是用于設置鍵值的類型,如:字符串,二進制,DWord等等,默認是字符串.如:            software.SetValue("test2", 0, RegistryValueKind.DWord);// 二進制信息            key.Close();//2:讀取:            string info;            RegistryKey KeyLocalMachine;            KeyLocalMachine = Registry.LocalMachine;            RegistryKey myreg = KeyLocalMachine.OpenSubKey("SOFTWARE//MYTEST");//或者使用myreg = KeyLocalMachine.OpenSubKey("SOFTWARE//MYTEST", true);            info = myreg.GetValue("test").ToString();            myreg.Close();//info結果為:園//3:刪除:            RegistryKey delKey = Registry.LocalMachine.OpenSubKey("SOFTWARE//MYTEST", true);            delKey.DeleteValue("test");            delKey.Close();//細心的讀者可能發現了第二個例子中OpenSubKey()方法參數與其他例子的不同.//如果你要修改鍵值,包括創建、設置、刪除鍵值等都要在方法后面加個布爾參數,設置為true,表示可寫可改;如果僅僅只是讀取鍵值可以不加,此時可寫關閉,你不能再往里寫值(當然,你要加也可以true)!//還有讀者提到讀寫默認鍵值的問題,主要在設置、讀取的方法中將鍵名置空則就是對默認鍵值的操作.//如:            software.SetValue("", "");//在HKEY_LOCAL_MACHINE/SOFTWARE/MYTEST修改默認鍵值的值為“園”.讀取類似!//另外,默認的鍵值是不能刪除的,所以不要用DeleteValue()方法去刪除,會拋出異常的!//三:判斷注冊表項是否存在//PRivate bool IsRegeditItemExist()//{//string[] subkeyNames;//RegistryKey hkLocalMachine = Registry.LocalMachine;//RegistryKey softwareItem = hkLocalMachine.OpenSubKey("SOFTWARE");//或RegistryKey softwareItem = hkLocalMachine.OpenSubKey("SOFTWARE", true);//subkeyNames = softwareItem.GetSubKeyNames();//取得該項下所有子項的名稱的序列,并傳遞給預定的數組中//foreach (string keyName in subkeyNames) //遍歷整個數組//{//    if (keyName == "TEST") //判斷子項的名稱//    {//        hkLocalMachine.Close();//        //return true;//    }//}//hkLocalMachine.Close();//return false;//}//四:判斷鍵值是否存在//private bool IsRegeditKeyExit()//{//string[] subkeyValueNames;//RegistryKey hkLocalMachine = Registry.LocalMachine;//RegistryKey keyValueName = hkLocalMachine.OpenSubKey("SOFTWARE//MYTEST");//或者RegistryKey keyValueName = hkml.OpenSubKey("SOFTWARE//MYTEST", true);//subkeyValueNames = keyValueName.GetValueNames();//取得該項下所有鍵值的名稱的序列,并傳遞給預定的數組中//foreach (string kValueName in subkeyValueNames)//{//    if (kValueName == "test") //判斷鍵值的名稱//    {//        hkLocalMachine.Close();//        //return true;//    }//}//hkLocalMachine.Close();//return false;//}//注:注冊表的數據結構//注冊表由鍵(或稱“項”)、子鍵(子項)和值項構成.//一個鍵就是分支中的一個文件夾,而子鍵就是這個文件夾中的子文件夾,子鍵同樣是一個鍵.//一個值項則是一個鍵的當前定義,由名稱、數據類型以及分配的值組成.//一個鍵可以有一個或多個值,每個值的名稱各不相同,如果一個值的名稱為空,則該值為該鍵的默認值.//數據類型//注冊表的數據類型主要有以下四種://顯示類型(在編輯器中) 數據類型 說明//REG_SZ 字符串 文本字符串//REG_MULTI_SZ 多字符串 含有多個文本值的字符串//REG_BINARY 二進制數 二進制值,以十六進制顯示.//REG_DWORD 雙字 一個32位的二進制值,顯示為8位的十六進制值.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪洞县| 德化县| 高州市| 信阳市| 马公市| 荔波县| 峨山| 报价| 青阳县| 大邑县| 塘沽区| 阜南县| 社旗县| 扶沟县| 吉林市| 邮箱| 苗栗县| 揭东县| 华安县| 夹江县| 淮阳县| 凤庆县| 资中县| 论坛| 济南市| 江油市| 南和县| 晋江市| 青川县| 罗江县| 湘潭市| 忻州市| 宣城市| 万全县| 丹棱县| 侯马市| 安图县| 株洲县| 岳普湖县| 孝感市| 高雄县|