⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 注册表浏览器程序代码
💻 VB
字号:
Imports Microsoft.Win32
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

    Public Sub New()
        MyBase.New()

        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()

        '在 InitializeComponent() 调用之后添加任何初始化

    End Sub

    '窗体重写处置以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows 窗体设计器所必需的
    Private components As System.ComponentModel.IContainer

    '注意:以下过程是 Windows 窗体设计器所必需的
    '可以使用 Windows 窗体设计器修改此过程。
    '不要使用代码编辑器修改它。
    Friend WithEvents Panel1 As System.Windows.Forms.Panel
    Friend WithEvents Splitter1 As System.Windows.Forms.Splitter
    Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
    Friend WithEvents ListView1 As System.Windows.Forms.ListView
    Friend WithEvents type As System.Windows.Forms.ColumnHeader
    Friend WithEvents data As System.Windows.Forms.ColumnHeader
    Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
    Friend WithEvents LVname As System.Windows.Forms.ColumnHeader
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.Panel1 = New System.Windows.Forms.Panel()
        Me.TreeView1 = New System.Windows.Forms.TreeView()
        Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
        Me.Splitter1 = New System.Windows.Forms.Splitter()
        Me.ListView1 = New System.Windows.Forms.ListView()
        Me.LVname = New System.Windows.Forms.ColumnHeader()
        Me.type = New System.Windows.Forms.ColumnHeader()
        Me.data = New System.Windows.Forms.ColumnHeader()
        Me.Panel1.SuspendLayout()
        Me.SuspendLayout()
        '
        'Panel1
        '
        Me.Panel1.Controls.AddRange(New System.Windows.Forms.Control() {Me.TreeView1})
        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Left
        Me.Panel1.Name = "Panel1"
        Me.Panel1.Size = New System.Drawing.Size(200, 413)
        Me.Panel1.TabIndex = 0
        '
        'TreeView1
        '
        Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.TreeView1.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.TreeView1.ImageList = Me.ImageList1
        Me.TreeView1.Name = "TreeView1"
        Me.TreeView1.Nodes.AddRange(New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("我的电脑", 2, 2, New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("HKEY_CLASSES_ROOT", 0, 1), New System.Windows.Forms.TreeNode("HKEY_CURRENT_USER", 0, 1), New System.Windows.Forms.TreeNode("HKEY_LOCAL_MACHINE", 0, 1), New System.Windows.Forms.TreeNode("HKEY_USERS", 0, 1), New System.Windows.Forms.TreeNode("HEKY_CURRENT_CONFIG", 0, 1)})})
        Me.TreeView1.Size = New System.Drawing.Size(200, 413)
        Me.TreeView1.TabIndex = 0
        '
        'ImageList1
        '
        Me.ImageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
        Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)
        Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
        Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
        '
        'Splitter1
        '
        Me.Splitter1.Location = New System.Drawing.Point(200, 0)
        Me.Splitter1.Name = "Splitter1"
        Me.Splitter1.Size = New System.Drawing.Size(3, 413)
        Me.Splitter1.TabIndex = 1
        Me.Splitter1.TabStop = False
        '
        'ListView1
        '
        Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.LVname, Me.type, Me.data})
        Me.ListView1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.ListView1.FullRowSelect = True
        Me.ListView1.Location = New System.Drawing.Point(203, 0)
        Me.ListView1.Name = "ListView1"
        Me.ListView1.Size = New System.Drawing.Size(429, 413)
        Me.ListView1.SmallImageList = Me.ImageList1
        Me.ListView1.Sorting = System.Windows.Forms.SortOrder.Ascending
        Me.ListView1.TabIndex = 2
        Me.ListView1.View = System.Windows.Forms.View.Details
        '
        'LVname
        '
        Me.LVname.Text = "名称"
        Me.LVname.Width = 100
        '
        'type
        '
        Me.type.Text = "类型"
        Me.type.Width = 100
        '
        'data
        '
        Me.data.Text = "数据"
        Me.data.Width = 160
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(632, 413)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListView1, Me.Splitter1, Me.Panel1})
        Me.Name = "Form1"
        Me.Text = "注册表浏览器"
        Me.Panel1.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        addRoot()

    End Sub
    Private Function GetKey(ByVal node As TreeNode) As RegistryKey
        Dim path As String = node.FullPath
        Dim key As RegistryKey = Registry.LocalMachine
        '不是根节点
        If path.Length > 4 Then
            Dim tokens() As String = path.Split(New Char() {"\"})
            Select Case tokens(1)
                Case "HKEY_CLASSES_ROOT"
                    key = Registry.ClassesRoot
                Case "HKEY_CURRENT_USER"
                    key = Registry.CurrentUser
                Case "HKEY_LOCAL_MACHINE"
                    key = Registry.LocalMachine

                Case "HKEY_USERS"
                    key = Registry.Users
                Case "HKEY_CURRENT_CONFIG"
                    key = Registry.CurrentConfig
            End Select
            '去掉我的电脑
            path = path.Substring(6)
            '如果不是根键,找出路径,取得注册键对象
            If path.IndexOf("\") > 0 Then
                path = path.Substring(path.IndexOf("\") + 1)
                Try
                    key = key.OpenSubKey(path)
                Catch e As Exception
                    MessageBox.Show(e.Message)
                End Try

            End If
        End If
        Return key

    End Function

    '在树型控件中添加子节点
    Private Sub AddTreeNode(ByVal node As TreeNode)
        If node.GetNodeCount(False) = 0 Then
            Dim key As RegistryKey = GetKey(node)

            Dim subkey() As String
            Try
                subkey = key.GetSubKeyNames()
                Dim i As Integer
                For i = 0 To subkey.Length - 1
                    node.Nodes.Add(subkey(i))

                Next
            Catch
            End Try

        End If
    End Sub

    Private Sub addRoot()
        Dim i As Integer
        For i = 0 To TreeView1.TopNode.GetNodeCount(False) - 1
            Try
                AddTreeNode(TreeView1.TopNode.Nodes(i))
            Catch e As Exception
                MessageBox.Show(e.Message)
            End Try
        Next
    End Sub

    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        If TreeView1.SelectedNode.Text = "我的电脑" Then
            Dim i As Integer
            For i = 0 To TreeView1.SelectedNode.GetNodeCount(False) - 1
                Try
                    AddTreeNode(TreeView1.SelectedNode.Nodes(i))
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            Next
        End If
        ListView1.Items.Clear()

        Dim key As RegistryKey
        key = GetKey(TreeView1.SelectedNode)
        Dim names() As String = key.GetValueNames()
        Dim valueName As String
        Dim ValueType, ValueData As Object
        Dim k As Integer
        For k = 0 To names.Length - 1
            valueName = names(k)
            ValueData = key.GetValue(valueName)
            ValueType = key.GetType()
            Dim li As ListViewItem
            If Convert.ToString(ValueType) = "System.String" Then
                ValueType = "REG_DWORD"
                li = New ListViewItem(New String() {valueName, Convert.ToString(ValueType), Convert.ToString(ValueData)}, 3)
            Else
                ValueType = "REG_SZ"
                li = New ListViewItem(New String() {valueName, Convert.ToString(ValueType), Convert.ToString(ValueData)}, 4)
            End If
            ListView1.Items.Add(li)

        Next

    End Sub

    Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand

        Dim i As Integer
        For i = 0 To TreeView1.SelectedNode.GetNodeCount(False) - 1
            Try
                AddTreeNode(e.Node.Nodes(i))
            Catch ex As Exception
                'MessageBox.Show(ex.Message)
            End Try
        Next
    End Sub
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -