最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#操作注冊(cè)表的方法

 更新時(shí)間:2022年05月13日 11:48:28   作者:springsnow  
這篇文章介紹了C#操作注冊(cè)表的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、注冊(cè)表操作簡(jiǎn)介

Registry類,RegistryKey類提供了操作注冊(cè)表的接口

RegistryValueKind:用于指定操作注冊(cè)表的數(shù)據(jù)類型

注冊(cè)表巢

在注冊(cè)表中,最上面的節(jié)點(diǎn)是注冊(cè)表巢(registry hive)。

  • HKEY_CLASSES_ROOT(HKCR)    包含系統(tǒng)文件類型的細(xì)節(jié),以及應(yīng)用程序可以打開的文件類型,它還包含所有COM組件的注冊(cè)信息。
  • HKEY_CURRENT_USER(HKCU)    包含用戶目前登陸的機(jī)器的用戶配置,包括桌面設(shè)置、環(huán)境變量、網(wǎng)絡(luò)和打印機(jī)連接和其他定義用戶操作環(huán)境的變量。
  • HKEY_LOCAL_MACHINE(HKLM)    是一個(gè)很大的巢,其中包含所有安裝到機(jī)器上的軟件和硬件的信息。
  • HKEY_USERS(HKUSR)                包含所有用戶的用戶配置。
  • HKEY_CURRENT_CONFIG(HKCF)  包含機(jī)器上硬件的信息。

Registry靜態(tài)類

Registry類封裝了注冊(cè)表的七個(gè)基本主鍵:

  • Registry.ClassesRoot: 對(duì)應(yīng)于HKEY_CLASSES_ROOT主鍵
  • Registry.CurrentUser:對(duì)應(yīng)于HKEY_CURRENT_USER主鍵
  • Registry.LocalMachine:對(duì)應(yīng)于 HKEY_LOCAL_MACHINE主鍵
  • Registry.User:對(duì)應(yīng)于 HKEY_USER主鍵
  • Registry.CurrentConfig:對(duì)應(yīng)于HEKY_CURRENT_CONFIG主鍵
  • Registry.DynDa :對(duì)應(yīng)于HKEY_DYN_DATA主鍵
  • Registry.PerformanceData:對(duì)應(yīng)于HKEY_PERFORMANCE_DATA主鍵
const string KeyName = "HKEY_CURRENT_USER\\Example";
Registry.SetValue(keyName, "", 5280);//默認(rèn)名稱
Registry.SetValue(keyName, "TestLong", 1234567, RegistryValueKind.QWord);
int i = (int)Registry.GetValue(keyName, "", -1);//默認(rèn)值
long l = (long)Registry.GetValue(keyName, "TestLong", long.MinValue);

RegistryKey類

RegistryKey類封裝了對(duì)注冊(cè)表的基本操作。包括讀、寫、刪等操作的常用函數(shù):

  • Name:鍵的名稱(只讀)
  • SubKeyCount:鍵的子鍵個(gè)數(shù)
  • ValueCount:鍵包含的值的個(gè)數(shù)
  • Close():關(guān)閉鍵
  • CreateSubKey():創(chuàng)建給定名稱的子鍵
  • DeleteSubKey():刪除指定的子鍵
  • DeleteSubKeyTree():遞歸刪除子鍵及其所有的子鍵
  • DeleteValue():從鍵中刪除一個(gè)指定的值
  • GetAccessControl():返回指定注冊(cè)表鍵的訪問控制表
  • GetSubKeyNames():返回包含子鍵名稱的字符串?dāng)?shù)組
  • GetValue():返回指定的值
  • GetValueKind();返回指定的值,檢索其注冊(cè)表數(shù)據(jù)類型
  • GetValueNames():返回一個(gè)包含所有鍵值名稱的字符串?dāng)?shù)組
  • OpenSubKey():返回表示給定子鍵的RegistryKey實(shí)例引用
  • SetAccessControl():把訪問控制表(ACL)應(yīng)用于指定的注冊(cè)表鍵
  • SetValue();設(shè)置指定的值

二、注冊(cè)表項(xiàng)的創(chuàng)建、打開、刪除

1、創(chuàng)建,CreateSubKey

//使用CreateSubKey()在SOFTWARE下創(chuàng)建子項(xiàng)test
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.CreateSubKey(@"SOFTWARE\test");
hklm.Close();
hkSoftWare.Close();

2、打開,OpenSubKey

//使用OpenSubKey()打開項(xiàng),獲得RegistryKey對(duì)象,當(dāng)路徑不存在時(shí),為Null。第二個(gè)參數(shù)為true,表示可寫,可讀,可刪;省略時(shí)只能讀。
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);
hklm.Close();
hkSoftWare.Close();

3、刪除,DeleteSubKey

//主要用到了DeleteSubKey(),刪除test項(xiàng)
RegistryKey hklm = Registry.LocalMachine;
hklm.DeleteSubKey(@"SOFTWARE\test", true);  //為true時(shí),刪除的注冊(cè)表不存在時(shí)拋出異常;當(dāng)為false時(shí)不拋出異常。
hklm.Close();

三、注冊(cè)表鍵值的創(chuàng)建、打開和刪除

1、創(chuàng)建,SetValue

//主要用到了SetValue(),表示在test下創(chuàng)建名稱為Name,值為RegistryTest的鍵值。第三個(gè)參數(shù)表示鍵值類型,省略時(shí),默認(rèn)為字符串
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test",true);
hkSoftWare.SetValue("Name", "RegistryTest", RegistryValueKind.String);
hklm.Close();
hkSoftWare.Close();

2、打開,GetValue

//主要用到了GetValue(),獲得名稱為"Name"的鍵值
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);
string sValue = hkSoftWare.GetValue("Name").ToString();
hklm.Close();
hkSoftWare.Close();

3、刪除,DeleteValue

//主要用到了DeleteValue(),表示刪除名稱為"Name"的鍵值,第二個(gè)參數(shù)表示是否拋出異常
RegistryKey hklm = Registry.LocalMachine;
RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE\test", true);
hkSoftWare.DeleteValue("Name", true);
hklm.Close();
hkSoftWare.Close();

四、例子:

1、判斷注冊(cè)表項(xiàng)、注冊(cè)表鍵值是否存在

        //判斷注冊(cè)表項(xiàng)是否存在
        private bool IsRegistryKeyExist(string sKeyName)
        {
            string[] sKeyNameColl;
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkSoftWare = hklm.OpenSubKey(@"SOFTWARE");
            sKeyNameColl = hkSoftWare.GetSubKeyNames(); //獲取SOFTWARE下所有的子項(xiàng)
            foreach (string sName in sKeyNameColl)
            {
                if (sName == sKeyName)
                {
                    hklm.Close();
                    hkSoftWare.Close();
                    return true;
                }
            }
            hklm.Close();
            hkSoftWare.Close();
            return false;
        }


        //判斷鍵值是否存在
        private bool IsRegistryValueNameExist(string sValueName)
        {
            string[] sValueNameColl;
            RegistryKey hklm = Registry.LocalMachine;
            RegistryKey hkTest = hklm.OpenSubKey(@"SOFTWARE\test");
            sValueNameColl = hkTest.GetValueNames(); //獲取test下所有鍵值的名稱
            foreach (string sName in sValueNameColl)
            {
                if (sName == sValueName)
                {
                    hklm.Close();
                    hkTest.Close();
                    return true;
                }
            }
            hklm.Close();
            hkTest.Close();
            return false;
        }

2、程序自啟動(dòng)程序

//開啟程序自啟動(dòng)
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
rk2.SetValue("JcShutdown", path);
rk2.Close();
rk.Close();

//關(guān)閉程序自啟動(dòng)
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
rk2.DeleteValue("JcShutdown", false);
rk2.Close();
rk.Close();

五、打開遠(yuǎn)程注冊(cè)表

RegistryKey baseKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine,"192.168.0.2");
RegistryKey softwareKey = key.OpenSubKey("software\\test");
softwareKey.Close();
baseKey.Close();

到此這篇關(guān)于C#操作注冊(cè)表的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#多線程等待所有子線程結(jié)束的示例

    C#多線程等待所有子線程結(jié)束的示例

    這篇文章主要介紹了C#多線程等待所有子線程結(jié)束的示例,幫助大家更好的理解和學(xué)習(xí)c#編程語言,感興趣的朋友可以了解下
    2020-12-12
  • 一文掌握C# JSON(2023最新整理)

    一文掌握C# JSON(2023最新整理)

    JSON的全稱是JavaScript Object Notation,意思是JavaScript對(duì)象表示法,它是一種基于文本,獨(dú)立于語言的輕量級(jí)數(shù)據(jù)交換格式,這篇文章主要介紹了C#中的JSON(2023最新整理),需要的朋友可以參考下
    2023-05-05
  • C# MVC 使用LayUI實(shí)現(xiàn)下拉框二級(jí)聯(lián)動(dòng)的功能

    C# MVC 使用LayUI實(shí)現(xiàn)下拉框二級(jí)聯(lián)動(dòng)的功能

    這篇文章主要介紹了C# MVC 如何使用LayUI實(shí)現(xiàn)下拉框二級(jí)聯(lián)動(dòng),文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C#優(yōu)雅的實(shí)現(xiàn)INotifyPropertyChanged接口

    C#優(yōu)雅的實(shí)現(xiàn)INotifyPropertyChanged接口

    這篇文章介紹了C#實(shí)現(xiàn)INotifyPropertyChanged接口的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#中Override關(guān)鍵字和New關(guān)鍵字的用法詳解

    C#中Override關(guān)鍵字和New關(guān)鍵字的用法詳解

    這篇文章主要介紹了C#中Override關(guān)鍵字和New關(guān)鍵字的用法,需要的朋友可以參考下
    2016-01-01
  • C#自定義IP輸入框控件

    C#自定義IP輸入框控件

    這篇文章主要為大家詳細(xì)介紹了C#自定義IP輸入框控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 淺談C#中的值類型和引用類型

    淺談C#中的值類型和引用類型

    在C#中值類型的變量直接存儲(chǔ)數(shù)據(jù),而引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)堆中。下面我們來簡(jiǎn)單談?wù)凜#中的值類型和引用類型
    2016-06-06
  • C#程序調(diào)用C++動(dòng)態(tài)庫(dll文件)遇到的坑及解決

    C#程序調(diào)用C++動(dòng)態(tài)庫(dll文件)遇到的坑及解決

    這篇文章主要介紹了C#程序調(diào)用C++動(dòng)態(tài)庫(dll文件)遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 教你如何用C#制作文字轉(zhuǎn)換成聲音程序

    教你如何用C#制作文字轉(zhuǎn)換成聲音程序

    近突發(fā)奇想,想玩玩文字轉(zhuǎn)語音的東東,想了下思路,用C#簡(jiǎn)單實(shí)現(xiàn)了下,分享給大家,打算下面搞搞語音識(shí)別,下次分享給大家
    2014-09-09
  • C#?winForm自定義彈出頁面效果

    C#?winForm自定義彈出頁面效果

    這篇文章主要為大家詳細(xì)介紹了C#?winForm自定義彈出頁面效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

遵化市| 星子县| 新密市| 冷水江市| 丹江口市| 上高县| 沭阳县| 土默特右旗| 建德市| 忻州市| 黄梅县| 区。| 驻马店市| 通山县| 莱芜市| 东乡县| 铁力市| 通辽市| 玉龙| 东港市| 平江县| 略阳县| 泸西县| 皮山县| 嘉兴市| 虞城县| 全州县| 炉霍县| 新干县| 章丘市| 龙川县| 百色市| 安达市| 屏东县| 邢台市| 简阳市| 永福县| 望都县| 揭东县| 民县| 塔城市|