Welcome to the fifth and final part!
In this post I’ll provide a complete overview of all the actions discussed in the previous 3 parts for those who don’t feel like reading through the entire explanation on each post 😛
Let’s get started shall we? 🙂
Table of contents
- Part 2 – Writing to the Registry
- Part 3 – Reading from the Registry
- Part 4 – Deleting from the Registry
- Everything put together
Part 2 – Writing to the Registry
'Import correct namespace
Imports Microsoft.Win32
'Procedure to store stuff in the Registry
Public Sub fnWrite()
'Declare variables
Dim oRegKey As RegistryKey
'Set the subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", True)
'Create a new subkey
oRegKey.CreateSubKey("MyApp")
'Set the subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp", True)
'Create new values
oRegKey.SetValue("Version", "1.0.0.0")
oRegKey.SetValue("Author", "Dirk Schuermans")
oRegKey.SetValue("Serial", "A1B2C3D4E5F6G7H8I9")
'Close the key
oRegKey.Close()
End Sub
Part 3 – Reading from the Registry
'Import correct namespace
Imports Microsoft.Win32
'Procedure to read stuff from the Registry
Public Sub fnRead()
'Declare variables
Dim oRegKey as RegistryKey
Dim sVersion, sAuthor, sSerial As String
'Set the SubKey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp")
'Retrieve settings from Registry
sVersion = oRegKey.GetValue("Version")
sAuthor = oRegKey.GetValue("Author")
sSerial = oRegKey.GetValue("Serial")
End Sub
Part 4 – Deleting from the Registry
'Import correct namespace
Imports Microsoft.Win32
Public Sub fnDelete()
'Declare variables
Dim oRegKey As RegistryKey
'Define subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", True)
'Delete our subkey
oRegKey.DeleteSubKeyTree("MyApp")
'Close the RegistryKey
oRegKey.Close()
End Sub
This is a code snippet you can basicly copy / paste straight into your Visual Studio if you meet the following requirements:
- You have a form with 3 buttons called Form1
- btnWrite
- btnRead
- btnDelete
'Import correct namespace
Imports Microsoft.Win32
Public Class Form1
'Declare variables, scope: global
Dim oRegKey As RegistryKey
Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", True)
'Create a new subkey
oRegKey.CreateSubKey("MyApp")
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp", True)
'Insert new values
oRegKey.SetValue("Test1", "test1")
oRegKey.SetValue("Test2", "test2")
oRegKey.SetValue("Test3", "test3")
'Create a new subkey
oRegKey.CreateSubKey("TEST2")
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp\TEST2", True)
'Insert new values
oRegKey.SetValue("Test4", "test4")
oRegKey.SetValue("Test5", "test5")
oRegKey.SetValue("Test6", "test6")
'Close the RegistryKey
oRegKey.Close()
MessageBox.Show("Registry entries have been created!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
'Define variables
Dim sResult As String = ""
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp")
'Go over each value within the subkey
Try
For Each sValue As String In oRegKey.GetValueNames
'Add it to the results
sResult += sValue & " = " & oRegKey.GetValue(sValue) & vbNewLine
Next
Catch ex As NullReferenceException
MessageBox.Show("It seems that the subkey SOFTWARE\MyApp does not exist. Please create it first.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
'Show the results
MessageBox.Show("HKEY_LOCAL_MACHINE\SOFTWARE\MyAPP contains the following values:" & vbNewLine & vbNewLine _
& sResult, "Results", MessageBoxButtons.OK, MessageBoxIcon.Information)
'Clear the results
sResult = ""
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp\TEST2")
'Go over each value within the subkey
Try
For Each sValue As String In oRegKey.GetValueNames
'Add it to the results
sResult += sValue & " = " & oRegKey.GetValue(sValue) & vbNewLine
Next
Catch ex As NullReferenceException
MessageBox.Show("It seems that the subkey SOFTWARE\MyApp does not exist. Please create it first.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
'Show the results
MessageBox.Show("HKEY_LOCAL_MACHINE\SOFTWARE\MyAPP\TEST2 contains the following values:" & vbNewLine & vbNewLine _
& sResult, "Results", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
'Define what subkey to work with
oRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", True)
'Delete the subkey
Try
oRegKey.DeleteSubKeyTree("MyApp")
MessageBox.Show("Registry entries have been deleted!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As ArgumentException
MessageBox.Show("It seems that the subkey you're trying to delete does not exist. Please create it first", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
'Close the RegistryKey
oRegKey.Close()
End Sub
End Class
I noticed that you are trying to write to KHLM.
This behavior should be avoided since HKLM requires administrative rights.
So please write to HKCU, since there you have the rights.
And please replace vbNewLine by Environment.NewLine.
vbNewLine is deprecated.
And since when would vbNewLine be decrepated?
Can’t find anything related to this…
In regards to the whole HKLM thing: It’ll depend on the scope of your program wether to write to HKLM or to HKCU. This was just a HKLM example.
In reply to my previous post.
vbNewLine is always \n\r
while Environment.NewLine is Operating System dependent. When you compile a .NET app on Linux it will result in \n, and on Mac it will result in \r.
Alright thanks, I’ll keep that in mind 🙂