C# 注冊(cè)表 操作實(shí)現(xiàn)代碼
更新時(shí)間:2009年07月03日 15:55:14 作者:
Windows 操作系統(tǒng)的注冊(cè)表包含了很多有關(guān)計(jì)算機(jī)運(yùn)行的配置方式,打開注冊(cè)表我們可以看到注冊(cè)表是按類似于目錄的樹結(jié)構(gòu)組織的
其中第二級(jí)目錄包含了五個(gè)預(yù)定義主鍵分別是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。
下面我們來分別解釋這5個(gè)類的作用
HKEY_CLASSES_ROOT該主鍵包含了文件的擴(kuò)展名和應(yīng)用程序的關(guān)聯(lián)信息以及Window Shell和OLE用于儲(chǔ)存注冊(cè)表的信息。該主鍵下的子鍵決定了在WINDOWS中如何顯示該類文件以及他們的圖標(biāo),該主鍵是從HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射過來的。
HKEY_CURRENT_USER該主鍵包含了如用戶窗口信息,桌面設(shè)置等當(dāng)前用戶的信息。
HKEY_LOCAL_MACHINE主鍵包含了計(jì)算機(jī)軟件和硬件的安裝和配置信息,該信息可供所有用戶使用
HKEY_USERS該主鍵記錄了當(dāng)前用戶的設(shè)置信息,每次用戶登入系統(tǒng)時(shí),就會(huì)在該主鍵下生成一個(gè)與用戶登入名一樣的子鍵,該子鍵保存了當(dāng)前用戶的桌面設(shè)置、背景位圖、快捷鍵,字體等信息。一般應(yīng)用程序不直接訪問改主鍵,而是通過主鍵HKEY_CURRENT_USER進(jìn)行訪問。
HKEY_CURRENT_CONFIG該主鍵保存了計(jì)算機(jī)當(dāng)前硬件的配置信息,這些配置可以根據(jù)當(dāng)前所連接的網(wǎng)絡(luò)類型或硬件驅(qū)動(dòng)軟件安裝的改變而改變。
C#也支持對(duì)注冊(cè)表的編輯,.NET框架在Microsoft.Win32名字空間中提供了兩個(gè)類來操作注冊(cè)表:Registry和RegistryKey。這兩個(gè)類都是密封類不允許被繼承。下面我們分別來介紹這兩個(gè)類。
Registry類提供了7個(gè)公共的靜態(tài)域,分別代表7個(gè)基本主鍵(其中兩個(gè)在XP系統(tǒng)中沒有,在這就不介紹了)分別是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它們分別對(duì)應(yīng)哪幾個(gè)鍵我想各位一看就會(huì)知道吧。
RegistryKey類中提供了對(duì)注冊(cè)表操作的方法。要注意的是操作注冊(cè)表必須符合系統(tǒng)權(quán)限,否則將會(huì)拋出錯(cuò)誤。
下面我們就來幾個(gè)操作注冊(cè)表常用的幾個(gè)方法
創(chuàng)建子鍵的方法原型為:
public RegistryKey CreateSubKey(string sunbkey);
參數(shù)sunbkey表示要?jiǎng)?chuàng)建的子鍵的名稱或路徑名。創(chuàng)建成功返回被創(chuàng)建的子鍵,否則返回null。
打開子鍵的方法原型為:
public RegistryKey OpenSubKey(string name);
public RegistryKey OpenSubKey(string name,bool writable);
參數(shù)name表示要打開的子鍵名或其路徑名,參數(shù)writable表示被打開的子鍵是否允許被修改,第一個(gè)方法打開的子鍵是只讀的。Microsoft.Win32類還為我們提供了另一個(gè)方法,用于打開遠(yuǎn)程計(jì)算機(jī)上的注冊(cè)表,方法原型為:
public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey,string machineName);
刪除子鍵的方法原型為:
public void DeleteKey(string subkey);
該方法用于刪除指定的主鍵。如果要?jiǎng)h除的子鍵還包含主鍵則刪除失敗,并返回一個(gè)異常,如果要徹底刪除該子鍵極其目錄下的子鍵可以用方法DeleteSubKeyTree,該方法原型如下:
public void DeleteKeyTree(string subkey);
讀取鍵值的方法原型如下:
public object GetValue(string name);
public object GetValue(string name,object defaultValue);
參數(shù)name表示鍵的名稱,返回類型是一個(gè)object類型,如果指定的鍵不存在則返回null。如果失敗又不希望返回的值是null則可以指定參數(shù)defaultValue,指定了參數(shù)則在讀取失敗的情況下返回該參數(shù)指定的值。
設(shè)置鍵值的方法原型如下:
public object SetValue(string name,object value);
下面我們來分別解釋這5個(gè)類的作用
HKEY_CLASSES_ROOT該主鍵包含了文件的擴(kuò)展名和應(yīng)用程序的關(guān)聯(lián)信息以及Window Shell和OLE用于儲(chǔ)存注冊(cè)表的信息。該主鍵下的子鍵決定了在WINDOWS中如何顯示該類文件以及他們的圖標(biāo),該主鍵是從HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射過來的。
HKEY_CURRENT_USER該主鍵包含了如用戶窗口信息,桌面設(shè)置等當(dāng)前用戶的信息。
HKEY_LOCAL_MACHINE主鍵包含了計(jì)算機(jī)軟件和硬件的安裝和配置信息,該信息可供所有用戶使用
HKEY_USERS該主鍵記錄了當(dāng)前用戶的設(shè)置信息,每次用戶登入系統(tǒng)時(shí),就會(huì)在該主鍵下生成一個(gè)與用戶登入名一樣的子鍵,該子鍵保存了當(dāng)前用戶的桌面設(shè)置、背景位圖、快捷鍵,字體等信息。一般應(yīng)用程序不直接訪問改主鍵,而是通過主鍵HKEY_CURRENT_USER進(jìn)行訪問。
HKEY_CURRENT_CONFIG該主鍵保存了計(jì)算機(jī)當(dāng)前硬件的配置信息,這些配置可以根據(jù)當(dāng)前所連接的網(wǎng)絡(luò)類型或硬件驅(qū)動(dòng)軟件安裝的改變而改變。
C#也支持對(duì)注冊(cè)表的編輯,.NET框架在Microsoft.Win32名字空間中提供了兩個(gè)類來操作注冊(cè)表:Registry和RegistryKey。這兩個(gè)類都是密封類不允許被繼承。下面我們分別來介紹這兩個(gè)類。
Registry類提供了7個(gè)公共的靜態(tài)域,分別代表7個(gè)基本主鍵(其中兩個(gè)在XP系統(tǒng)中沒有,在這就不介紹了)分別是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它們分別對(duì)應(yīng)哪幾個(gè)鍵我想各位一看就會(huì)知道吧。
RegistryKey類中提供了對(duì)注冊(cè)表操作的方法。要注意的是操作注冊(cè)表必須符合系統(tǒng)權(quán)限,否則將會(huì)拋出錯(cuò)誤。
下面我們就來幾個(gè)操作注冊(cè)表常用的幾個(gè)方法
創(chuàng)建子鍵的方法原型為:
public RegistryKey CreateSubKey(string sunbkey);
參數(shù)sunbkey表示要?jiǎng)?chuàng)建的子鍵的名稱或路徑名。創(chuàng)建成功返回被創(chuàng)建的子鍵,否則返回null。
打開子鍵的方法原型為:
public RegistryKey OpenSubKey(string name);
public RegistryKey OpenSubKey(string name,bool writable);
參數(shù)name表示要打開的子鍵名或其路徑名,參數(shù)writable表示被打開的子鍵是否允許被修改,第一個(gè)方法打開的子鍵是只讀的。Microsoft.Win32類還為我們提供了另一個(gè)方法,用于打開遠(yuǎn)程計(jì)算機(jī)上的注冊(cè)表,方法原型為:
public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey,string machineName);
刪除子鍵的方法原型為:
public void DeleteKey(string subkey);
該方法用于刪除指定的主鍵。如果要?jiǎng)h除的子鍵還包含主鍵則刪除失敗,并返回一個(gè)異常,如果要徹底刪除該子鍵極其目錄下的子鍵可以用方法DeleteSubKeyTree,該方法原型如下:
public void DeleteKeyTree(string subkey);
讀取鍵值的方法原型如下:
public object GetValue(string name);
public object GetValue(string name,object defaultValue);
參數(shù)name表示鍵的名稱,返回類型是一個(gè)object類型,如果指定的鍵不存在則返回null。如果失敗又不希望返回的值是null則可以指定參數(shù)defaultValue,指定了參數(shù)則在讀取失敗的情況下返回該參數(shù)指定的值。
設(shè)置鍵值的方法原型如下:
public object SetValue(string name,object value);
您可能感興趣的文章:
- C#操作注冊(cè)表的方法詳解
- c#讀寫注冊(cè)表示例分享
- C#讀寫注冊(cè)表的思路及代碼
- C#操作注冊(cè)表的方法
- C#通過windows注冊(cè)表獲取軟件清單的方法
- C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- C#設(shè)置軟件開機(jī)自動(dòng)運(yùn)行的方法(修改注冊(cè)表)
- 使用C#在注冊(cè)表中保存信息的例子
- C#設(shè)置自定義文件圖標(biāo)實(shí)現(xiàn)雙擊啟動(dòng)(修改注冊(cè)表)
- C# WinForm中禁止改變窗口大小的方法
- WinForm通過操作注冊(cè)表實(shí)現(xiàn)限制軟件使用次數(shù)的方法
相關(guān)文章
C#實(shí)現(xiàn)順序隊(duì)列和鏈隊(duì)列的代碼實(shí)例
今天小編就為大家分享一篇關(guān)于C#實(shí)現(xiàn)順序隊(duì)列和鏈隊(duì)列的代碼實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10C#實(shí)現(xiàn)給PDF文檔設(shè)置過期時(shí)間
我們可以給一些重要文檔或者臨時(shí)文件設(shè)置過期時(shí)間和過期信息提示來提醒讀者或管理者文檔的時(shí)效性,并及時(shí)對(duì)文檔進(jìn)行調(diào)整、更新等。下面本文將介紹如何通過C#來給PDF文檔設(shè)置過期時(shí)間的方法。需要的可以參考一下2022-01-01Unity使用EzySlice實(shí)現(xiàn)模型多邊形順序切割
這篇文章主要為大家詳細(xì)介紹了Unity使用EzySlice實(shí)現(xiàn)模型多邊形順序切割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07直接在線預(yù)覽Word、Excel、TXT文件之ASP.NET
這篇文章主要用asp.net技術(shù)實(shí)現(xiàn)直接在線預(yù)覽word、excel、txt文件,有需要的朋友可以參考下2015-08-08C# NullReferenceException解決案例講解
這篇文章主要介紹了C# NullReferenceException解決案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C#實(shí)現(xiàn)的一款比較美觀的驗(yàn)證碼完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的一款比較美觀的驗(yàn)證碼,以完整實(shí)例形式分析了C#生成驗(yàn)證碼與前端調(diào)用驗(yàn)證碼的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-06-06