VB.NET中访问注册表

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

1,返回或创建一个注册表键

  Dim  Key1  As  Microsoft.Win32.RegistryKey
        Key1 
=  My.Computer.Registry.CurrentUser    ' 返回当前用户键
         Dim  Key2  As  Microsoft.Win32.RegistryKey
        Key2 
=  Key1.OpenSubKey( " northsnow " )        ' 返回当前用户键下的northsnow键
         If  Key2  Is   Nothing   Then
            Key2 
=  Key1.CreateSubKey( " northsnow " )   ' 如果键不存在就创建它
         End   If


2,删除注册表键

Dim  Key1  As  Microsoft.Win32.RegistryKey
        Key1 
=  My.Computer.Registry.CurrentUser    ' 返回当前用户键
         Dim  Key2  As  Microsoft.Win32.RegistryKey
      
        Key2 
=  Key1.OpenSubKey( " northsnow " )        ' 返回当前用户键下的northsnow键
         If   Not  Key2  Is   Nothing   Then
            Key1.DeleteSubKey(
" northsnow " )   ' 如果键不存在就创建它
         End   If

 3,创建或读取注册表项

Dim  Key1  As  Microsoft.Win32.RegistryKey
        Key1 
=  My.Computer.Registry.CurrentUser    ' 返回当前用户键
         Dim  Key2  As  Microsoft.Win32.RegistryKey
        Key2 
=  Key1.OpenSubKey( " northsnow " True )        ' 返回当前用户键下的northsnow键,如果想创建项,必须指定第二个参数为true
         If  Key2  Is   Nothing   Then
            Key2 
=  Key1.CreateSubKey( " northsnow " )   ' 如果键不存在就创建它
         End   If

        
' 创建项,如果不存在就创建,如果存在则覆盖
        Key2.SetValue( " name " " 塞北的雪 " )
        Key2.SetValue(
" sex " True )
        Key2.SetValue(
" age " 30 )

        
' 返回项值
         Dim  sb  As   New  System.Text.StringBuilder
        sb.AppendLine(Key2.GetValue(
" name " ))
        sb.AppendLine(Key2.GetValue(
" sex " ))
        sb.AppendLine(Key2.GetValue(
" age " ))
        
MsgBox (sb.ToString)

        
' 查验某个项是否存在
         If  (Key2.GetValue( " name " ))  Is   Nothing   Then
            
MsgBox ( " no " )
        
Else
            
MsgBox ( " yes " )
        
End   If

        
If  (Key2.GetValue( " name2 " ))  Is   Nothing   Then
            
MsgBox ( " no " )
        
Else
            
MsgBox ( " yes " )
        
End   If

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

4,遍历注册表

这个也非常简单,在窗体上放一个按钮和两个文本框,添加如下的代码

   Dim  sb  As   New  System.Text.StringBuilder   ' 返回遍历结果
     Dim  sb2  As   New  System.Text.StringBuilder   ' 返回读取出错的注册表键
     Private   Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        
Dim Key1 As Microsoft.Win32.RegistryKey
        Key1 
= My.Computer.Registry.CurrentUser   '返回当前用户键
        If Not Key1 Is Nothing Then
            sb.AppendLine(Key1.Name)
            readValue(Key1)
            readReg(Key1)
        
End If
        
Me.TextBox1.Text = sb.ToString
        
Me.TextBox2.Text = sb2.ToString
    
End Sub

    
' 遍历注册表键树
     Private   Sub readReg(ByVal r As Microsoft.Win32.RegistryKey)
        
If r.SubKeyCount > 0 Then
            
Dim keyName() As String
            
Dim keyTemp As Microsoft.Win32.RegistryKey
            keyName 
= r.GetSubKeyNames
            
Dim i As Integer
            
For i = 0 To keyName.GetLength(0- 1
                
Try
                    sb.AppendLine(keyName(i))
                    keyTemp 
= r.OpenSubKey(keyName(i), True)
                    readValue(keyTemp)
                    readReg(keyTemp)
                
Catch ex As Exception
                    sb2.AppendLine(keyName(i))
                
End Try
            
Next
        
End If
    
End Sub

    
' 遍历某键下的项
     Private   Sub readValue(ByVal r As Microsoft.Win32.RegistryKey)
        
If r.ValueCount > 0 Then
            
Dim valueName() As String
            
Dim i As Integer
            valueName 
= r.GetValueNames
            
For i = 0 To valueName.GetLength(0- 1
                sb.AppendLine(
"####")
                sb.Append(r.Name)
                sb.Append(
"----")
                sb.Append(r.GetValue(valueName(i)).ToString)
            
Next
        
End If
    
End Sub

 


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值