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

首頁 > 開發(fā) > 綜合 > 正文

Visual C#來刪除注冊表中的注冊信息

2024-07-21 02:26:06
字體:
供稿:網(wǎng)友

在《用visual c#讀取注冊信息》的文中,已經(jīng)介紹了用 visual c#來讀取注冊表中的注冊信息。本文就來介紹用visual c#對注冊表的另外一個操作,這也是一個具有破壞性的操作過程--刪除注冊信息。

在上文中已經(jīng)知道,由于visual c#本身沒有帶類庫,他對注冊表的處理過程是通過調(diào)用.net framework sdk中的名稱空間microsoft.win32中封裝的二個類來實(shí)現(xiàn)的。這二個類就是registry類、registrykey類。在 registrykey類中定義了三個方法來刪除注冊表中的注冊信息。他們分別是:deletesubkey ( )方法、deletesubkeytree ( )方法、deletevalue ( )方法。下面就具體介紹一下在visual c#中如何正確使用這三個方法。

一.如何用visual c#中調(diào)用這三個方法:
在介紹如何使用這三個方法之前,還需要重新介紹一下registrykey類中的一個方法--opensubkey ( )方法。在上一文中已經(jīng)介紹了,此方法是打開指定的子鍵。其實(shí)opensubkey( )方法有二種調(diào)用的方式:

i > .opensubkey ( string , subkey ) :這種調(diào)用方式是對于此子鍵只是進(jìn)行讀操作。
ii > .opensubkey ( string subkey , boolean writable ):當(dāng)對子鍵使用寫操作的時候要用此種調(diào)用方法。如果在對子鍵使用了寫操作,但仍然使用第一種調(diào)用方法,在程序運(yùn)行的時候會產(chǎn)生一個錯誤信息。

(1). deletesubkey ( )方法:
此方法是刪除一個指定的子鍵,在使用此方法的時候,如果在此子鍵中還存在另外的子鍵,則會產(chǎn)生一個錯誤信息。在程序中調(diào)用此方法有二種原型,為:
i > . deletesubkey ( string , subkey ):這種調(diào)用方式就是直接刪除指定的子鍵。

ii > . deletesubkey ( string subkey , boolean info ):其中的"string"是要刪除的子鍵的名稱,"boolean"參數(shù)的意思是:如果值為"true",則在程序調(diào)用的時候,刪除的子鍵不存在,則產(chǎn) 生一個錯誤信息;如果值為"false",則在程序調(diào)用的時候,刪除的子鍵不存在,也不產(chǎn)生錯誤信息,程序依然正確運(yùn)行。所以在具體的程序設(shè)計(jì)過程中,我 還是推薦使用第二種調(diào)用方法。

(2). deletesubkeytree ( )方法:
此方法是徹底刪除指定的子鍵目錄,即:刪除該子鍵以及該子鍵以下的全部子鍵。由于此方法的破壞性是非常強(qiáng)的,所有在使用的時候要非常主要。在程序中調(diào)用此方法的原型就一種,為:

deletesubkeytree ( string subkey ):其中"subkey"就是要徹底刪除的子鍵名稱。

(3). deletevalue ( )方法:
此方法是刪除指定的鍵值。在程序中調(diào)用此方法的原型就一種,為:
deletevalue ( string value ):其中"value"就是要刪除的鍵值的名稱。
在介紹完與刪除注冊表中注冊信息有關(guān)方法后,將通過一個程序來說明他們在程序中具體用法。

二. 程序設(shè)計(jì)和運(yùn)行環(huán)境以及要準(zhǔn)備的工作:
i > .視窗系統(tǒng)2000服務(wù)器版

ii > ..net framework sdk beta 2版

iii > .由于程序的功能是刪除指定的主鍵、子鍵和鍵值,這就需要我們在注冊表中先為設(shè)置好這些值的位置和名稱。具體如下:
在hkey_local_machine主鍵下面的"software"子鍵中建立如下子鍵和鍵值:
在"software" 子鍵下建立"aaa"子鍵。在"aaa"子鍵下面建立"bbb"子鍵和"ddd"子鍵。在"bbb"子鍵中建立名稱為"ccc"的鍵值,鍵值的值為 "ccc"。子"ddd"子鍵中建立子鍵"eee",并在此子鍵中建立一個"fff"鍵值,鍵值的值為"fff"。程序中要刪除的鍵值是"ccc"鍵值, 要刪除的子鍵是"bbb",要徹底刪除的子鍵是"ddd"。具體設(shè)定如下圖所示:

點(diǎn)擊小圖放大圖01:為程序設(shè)定的注冊表結(jié)構(gòu)圖

三. 程序設(shè)計(jì)的重要步驟:
程序設(shè)計(jì)的主要步驟就是如何刪除鍵值、不包含任何子鍵的子鍵、包含子鍵的子鍵。下面就通過程序來具體說明:
(1).如何刪除鍵值。在程序中要刪除鍵值是"ccc"。以下就是程序中刪除此鍵值的具體語句。
registrykey hklm = registry.localmachine ;
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
registrykey no2 = no1.opensubkey ( "bbb" , true ) ;
//打開"bbb"子鍵
no2.deletevalue( "ccc" ) ;
//刪除名稱為"ccc"的鍵值


(2).如何刪除不包含任何子鍵的子鍵。在程序要刪除的子鍵是"bbb"。以下就是刪除此子鍵的具體程序代碼:
registrykey hklm = registry.localmachine ;
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
no1.deletesubkey ( "bbb", false );
//刪除名稱為"bbb"的子鍵


(3).如何刪除包含子鍵的子鍵。在程序中要刪除的此子鍵是"ddd"。以下就是刪除此子鍵的具體程序代碼:
registrykey hklm = registry.localmachine ;
hklm.deletesubkey ( "aaa", false );
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
no1.deletesubkeytree ( "ddd" );
//刪除名稱為"ddd"的子鍵


四. 本文中的程序源代碼( reg.cs )以及運(yùn)行界面:
reg.cs程序的主要功能就是刪除注冊表中的鍵值、不包含子鍵的子鍵和包含子鍵的子鍵。并且通過按鈕"讀取注冊表",以列表的顯示方法來及時了解刪除的情況。下圖就是程序運(yùn)行后的界面:

點(diǎn)擊小圖放大圖02:本文中程序的運(yùn)行界面

reg.cs程序源代碼如下:
using system ;
using system.drawing ;
using system.collections ;
using system.componentmodel ;
using system.windows.forms ;
using system.data ;
using microsoft.win32 ;
public class form1 : form
{
private system.componentmodel.container components ;
private listbox listbox1 ;
private button button1 ;
private button button2 ;
private button button3 ;
private button button4 ;
public form1 ( )
{
initializecomponent ( ) ;
}
//清除在程序中使用過的資源
public override void dispose ( )
{
base.dispose ( ) ;
components.dispose ( ) ;
}
//初始化程序中使用到的組件
private void initializecomponent ( )
{
components = new system.componentmodel.container ( ) ;
button1 = new button ( ) ;
button2 = new button ( ) ;
button3 = new button ( ) ;
button4 = new button ( ) ;
listbox1 = new listbox ( ) ;
button1.location = new system.drawing.point ( 16 , 320 ) ;
button1.size = new system.drawing.size ( 75 , 23 ) ;
button1.tabindex = 0 ;
button1.text = "讀取注冊表" ;
button1.click += new system.eventhandler ( button1_click ) ;

button2.location = new system.drawing.point ( 116 , 320 ) ;
button2.size = new system.drawing.size ( 75 , 23 ) ;
button2.tabindex = 0 ;
button2.text = "刪除鍵值ccc" ;
button2.click += new system.eventhandler ( button2_click ) ;

button3.location = new system.drawing.point ( 216 , 320 ) ;
button3.size = new system.drawing.size ( 75 , 23 ) ;
button3.tabindex = 0 ;
button3.text = "刪除子鍵bbb" ;
button3.click += new system.eventhandler ( button3_click ) ;

button4.location = new system.drawing.point ( 316 , 320 ) ;
button4.size = new system.drawing.size ( 75 , 23 ) ;
button4.tabindex = 0 ;
button4.text = "刪除主鍵ddd" ;
button4.click += new system.eventhandler ( button4_click ) ;

listbox1.location = new system.drawing.point ( 16 , 32 ) ;
listbox1.size = new system.drawing.size ( 496 , 264 ) ;
listbox1.tabindex = 1 ;

this.text = "用visual c#來刪除注冊表中的主鍵、子鍵和鍵值!" ;
this.autoscalebasesize = new system.drawing.size ( 5 , 13 ) ;
this.clientsize = new system.drawing.size ( 528 , 357 ) ;
this.controls.add ( listbox1 ) ;
this.controls.add ( button1 ) ;
this.controls.add ( button2 ) ;
this.controls.add ( button3 ) ;
this.controls.add ( button4 ) ;
}
protected void button1_click ( object sender , system.eventargs e )
{
listbox1.items.clear ( ) ;
registrykey hklm = registry.localmachine ;
registrykey software = hklm.opensubkey ( "software" ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa" ) ;
//打開"aaa"子鍵
foreach ( string site in no1.getsubkeynames ( ) )
//開始遍歷由子鍵名稱組成的字符串?dāng)?shù)組
{
listbox1.items.add ( site ) ;
//在列表中加入子鍵名稱
registrykey sitekey = no1.opensubkey ( site ) ;
//打開此子鍵
foreach ( string svalname in sitekey.getvaluenames ( ) )
//開始遍歷由指定子鍵擁有的鍵值名稱組成的字符串?dāng)?shù)組
{
listbox1.items.add ( " " + svalname + ": " + sitekey.getvalue ( svalname ) ) ;
//在列表中加入鍵名稱和對應(yīng)的鍵值
}
}
}
protected void button2_click ( object sender , system.eventargs e )
{
registrykey hklm = registry.localmachine ;
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
registrykey no2 = no1.opensubkey ( "bbb" , true ) ;
//打開"bbb"子鍵
no2.deletevalue( "ccc" ) ;
//刪除名稱為"ccc"的鍵值
}
protected void button3_click ( object sender , system.eventargs e )
{
registrykey hklm = registry.localmachine ;
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
no1.deletesubkey ( "bbb", false );
//刪除名稱為"bbb"的子鍵
}
protected void button4_click ( object sender , system.eventargs e )
{
registrykey hklm = registry.localmachine ;
hklm.deletesubkey ( "aaa", false );
registrykey software = hklm.opensubkey ( "software", true ) ;
//打開"software"子鍵
registrykey no1 = software.opensubkey ( "aaa", true ) ;
//打開"aaa"子鍵
no1.deletesubkeytree ( "ddd" );
//刪除名稱為"ddd"的子鍵
}
public static void main ( )
{
application.run ( new form1 ( ) ) ;
}
}


五. 總結(jié):
本文介紹visual c#注冊表編程的一個重要內(nèi)容,即:如何刪除注冊信息。由于刪除注冊信息是一項(xiàng)非常具有破壞性的操作,所以在操作之前一定要注意對注冊表的保護(hù)工作。

 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁强县| 常山县| 麻江县| 登封市| 雅安市| 大同市| 辽中县| 犍为县| 太仓市| 开远市| 静海县| 辽阳县| 潜山县| 弋阳县| 衡阳市| 佛冈县| 潼关县| 大方县| 昭通市| 临桂县| 深泽县| 南充市| 清苑县| 花莲市| 大竹县| 深水埗区| 甘谷县| 拜泉县| 通渭县| 麦盖提县| 徐州市| 洛阳市| 伊川县| 利津县| 永安市| 南宁市| 二连浩特市| 青浦区| 万盛区| 哈尔滨市| 顺平县|