在VB.NET中如何快速访问注册表的技巧 代码




在VB.NET中如何快速访问注册表的技巧 代码

2022-07-20 20:22:13 网络知识 官方管理员

vb.net中访问注册表变得非常的简单。我们可以用microsoft.Win32名称空间的下的registry类和registryKey类。另外My.Computer.Registry也可以返回一个Microsoft.Win32.Registry类的实例。
  下面就举几个小例子来说明vb.net访问注册表的方法。
  1、返回或创建一个注册表键

  DimKey1AsMicrosoft.Win32.RegistryKeyKey1=My.Computer.Registry.CurrentUser'返回当前用户键DimKey2AsMicrosoft.Win32.RegistryKeyKey2=Key1.OpenSubKey("northsnow")'返回当前用户键下的northsnow键IfKey2IsNothingThenKey2=Key1.CreateSubKey("northsnow")'如果键不存在就创建它EndIf

  2、删除注册表键

  DimKey1AsMicrosoft.Win32.RegistryKeyKey1=My.Computer.Registry.CurrentUser'返回当前用户键DimKey2AsMicrosoft.Win32.RegistryKeyKey2=Key1.OpenSubKey("northsnow")'返回当前用户键下的northsnow键IfNotKey2IsNothingThenKey1.DeleteSubKey("northsnow")'如果键不存在就创建它EndIf

  3、创建或读取注册表项 

  DimKey1AsMicrosoft.Win32.RegistryKeyKey1=My.Computer.Registry.CurrentUser'返回当前用户键DimKey2AsMicrosoft.Win32.RegistryKeyKey2=Key1.OpenSubKey("northsnow",True)'返回当前用户键下的northsnow键,

  如果想创建项,必须指定第二个参数为trueIfKey2IsNothingThenKey2=Key1.CreateSubKey("northsnow")'如果键不存在就创建它EndIf'创建项,如果不存在就创建,如果存在则覆盖Key2.SetValue("name","塞北的雪")Key2.SetValue("sex",True)Key2.SetValue("age",30)'返回项值DimsbAsNewSystem.Text.StringBuildersb.AppendLine(Key2.GetValue("name"))sb.AppendLine(Key2.GetValue("sex"))sb.AppendLine(Key2.GetValue("age"))MsgBox(sb.ToString)'查验某个项是否存在If(Key2.GetValue("name"))IsNothingThenMsgBox("no")ElseMsgBox("yes")EndIfIf(Key2.GetValue("name2"))IsNothingThenMsgBox("no")ElseMsgBox("yes")EndIf

  '输出'塞北的雪'True'30'yes'no

4、遍历注册表  这个也非常简单,  在窗体上放一个按钮和两个文本框,添加如下的代码:

  DimsbAsNewSystem.Text.StringBuilder'返回遍历结果Dimsb2AsNewSystem.Text.StringBuilder'返回读取出错的注册表键PrivateSubButton3_Click()SubButton3_Click(ByValsenderAsSystem.Object,

  ByValeAsSystem.EventArgs)HandlesButton3.ClickDimKey1AsMicrosoft.Win32.RegistryKeyKey1=My.Computer.Registry.CurrentUser'返回当前用户键IfNotKey1IsNothingThensb.AppendLine(Key1.Name)readValue(Key1)readReg(Key1)EndIfMe.TextBox1.Text=sb.ToStringMe.TextBox2.Text=sb2.ToStringEndSub'遍历注册表键树PrivateSubreadReg()SubreadReg(ByValrAsMicrosoft.Win32.RegistryKey)Ifr.SubKeyCount>0ThenDimkeyName()AsStringDimkeyTempAsMicrosoft.Win32.RegistryKeykeyName=r.GetSubKeyNamesDimiAsIntegerFori=0TokeyName.GetLength(0)-1Trysb.AppendLine(keyName(i))keyTemp=r.OpenSubKey(keyName(i),True)readValue(keyTemp)readReg(keyTemp)CatchexAsExceptionsb2.AppendLine(keyName(i))EndTryNextEndIfEndSub'遍历某键下的项PrivateSubreadValue()SubreadValue(ByValrAsMicrosoft.Win32.RegistryKey)Ifr.ValueCount>0ThenDimvalueName()AsStringDimiAsIntegervalueName=r.GetValueNamesFori=0TovalueName.GetLength(0)-1sb.AppendLine("####")sb.Append(r.Name)sb.Append("----")sb.Append(r.GetValue(valueName(i)).ToString)NextEndIfEndSub


发表评论:

最近发表
网站分类
标签列表