📄 form1.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 Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents txtNewRegKey As System.Windows.Forms.TextBox
Friend WithEvents txtNewValueName As System.Windows.Forms.TextBox
Friend WithEvents txtNewValue As System.Windows.Forms.TextBox
Friend WithEvents btnAdd As System.Windows.Forms.Button
Friend WithEvents treReg As System.Windows.Forms.TreeView
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.treReg = New System.Windows.Forms.TreeView()
Me.btnAdd = New System.Windows.Forms.Button()
Me.txtNewRegKey = New System.Windows.Forms.TextBox()
Me.txtNewValueName = New System.Windows.Forms.TextBox()
Me.txtNewValue = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'treReg
'
Me.treReg.ImageIndex = -1
Me.treReg.Location = New System.Drawing.Point(192, 0)
Me.treReg.Name = "treReg"
Me.treReg.SelectedImageIndex = -1
Me.treReg.Size = New System.Drawing.Size(264, 312)
Me.treReg.TabIndex = 0
'
'btnAdd
'
Me.btnAdd.Location = New System.Drawing.Point(64, 248)
Me.btnAdd.Name = "btnAdd"
Me.btnAdd.Size = New System.Drawing.Size(56, 24)
Me.btnAdd.TabIndex = 1
Me.btnAdd.Text = "添加"
'
'txtNewRegKey
'
Me.txtNewRegKey.Location = New System.Drawing.Point(32, 48)
Me.txtNewRegKey.Name = "txtNewRegKey"
Me.txtNewRegKey.Size = New System.Drawing.Size(128, 21)
Me.txtNewRegKey.TabIndex = 2
Me.txtNewRegKey.Text = ""
'
'txtNewValueName
'
Me.txtNewValueName.Location = New System.Drawing.Point(32, 112)
Me.txtNewValueName.Name = "txtNewValueName"
Me.txtNewValueName.Size = New System.Drawing.Size(128, 21)
Me.txtNewValueName.TabIndex = 3
Me.txtNewValueName.Text = ""
'
'txtNewValue
'
Me.txtNewValue.Location = New System.Drawing.Point(32, 176)
Me.txtNewValue.Name = "txtNewValue"
Me.txtNewValue.Size = New System.Drawing.Size(128, 21)
Me.txtNewValue.TabIndex = 4
Me.txtNewValue.Text = ""
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(32, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(72, 16)
Me.Label1.TabIndex = 5
Me.Label1.Text = "新注册表项"
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(32, 88)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(72, 16)
Me.Label2.TabIndex = 6
Me.Label2.Text = "新数值名称"
'
'Label3
'
Me.Label3.Location = New System.Drawing.Point(32, 152)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(72, 16)
Me.Label3.TabIndex = 7
Me.Label3.Text = "新数值的值"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(456, 310)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label3, Me.Label2, Me.Label1, Me.txtNewValue, Me.txtNewValueName, Me.txtNewRegKey, Me.btnAdd, Me.treReg})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
treReg.SelectedNode = treReg.Nodes.Add("Software")
'把HKEY_LOCAL_MACHINE下的Software项的所有子项读出,放到树中
ReadReg(Registry.LocalMachine.OpenSubKey("Software"))
'展开整棵树
treReg.ExpandAll()
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim reg As RegistryKey
Dim subreg As RegistryKey
Try
reg = Registry.LocalMachine
reg = reg.OpenSubKey("Software", True)
'创建一个新的注册表项
subreg = reg.CreateSubKey(txtNewRegKey.Text)
'设置新注册表项的值
subreg.SetValue(txtNewValueName.Text, txtNewValue.Text)
Catch ex As Security.SecurityException
'在读写注册表时,很可能会遇到权限不足的状况
'必须对此有所准备
MessageBox.Show("无法打开注册表项")
Catch ex As Exception
MessageBox.Show("无法写入注册表")
End Try
'清除树中所有的内容,然后重新读注册表
'以反映最新的变化
treReg.Nodes(0).Nodes.Clear()
ReadReg(Registry.LocalMachine.OpenSubKey("Software"))
treReg.ExpandAll()
End Sub
Private Sub treReg_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles treReg.AfterSelect
e.Node.Nodes.Clear()
'读取用户选择的注册表项之下的子表项
ReadReg(Registry.LocalMachine.OpenSubKey(e.Node.FullPath))
'将此表项展开以显示其子表项
e.Node.ExpandAll()
End Sub
Private Sub treReg_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles treReg.DoubleClick
Dim reg As RegistryKey = Registry.LocalMachine.OpenSubKey(treReg.SelectedNode.FullPath)
Dim sValueNames() As String
Dim sValueName, sMessage As String
'得到注册表值
sValueNames = reg.GetValueNames()
For Each sValueName In sValueNames
sMessage += sValueName & ": " & reg.GetValue(sValueName) & Environment.NewLine
Next
'在对话框中显示值
If sMessage <> "" Then
MessageBox.Show(sMessage)
End If
End Sub
Private Sub ReadReg(ByVal regkey As RegistryKey)
Dim subreg As RegistryKey
Dim subkeys() As String
Dim subkey As String
'读入一个注册表项下的子表项
subkeys = regkey.GetSubKeyNames()
'把这些子表项加入到树中。
For Each subkey In subkeys
treReg.SelectedNode.Nodes.Add(subkey)
subreg = regkey.OpenSubKey(subkey)
Next
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -