none
How to use (add, read, change, delete) registry keys with vb.net RRS feed

  • General discussion

  • Find this tutorial on Dot Net Source
    Reason of this project:

    This is the next part of the previous tutorial. We'll learn here how to add, change, read, delete registry keys and values using vb.net.
    I included a sample that contains all those functionality.
    Project details:
    1- How to add a registry key/value
    2- How to read a registry value
    3- How to delete a key or a value
    4- Changing a value or a key
    5- Hints to use registry with VB.net
    6- The registry reader (VB.net)

    1- How to add a registry key/value

    One thing that I think I forget to notice. A folder in the registry is name "key" and the elements in this key are named "values".
    There's a description of each value type in the 5th tutorial
    Now we'll see how to add a key or a value.
    Probably you have thought where we'll put it and whether it's a key or a value.
    So we have 2 things to notice.
    Visual Basic will automatically show you the hives (they are stored in).
    You'll have only to choose the needed one.
    To do that paste the following line.
    My.Computer.Registry.CurrentUser.CreateSubKey("TestKey")

    This line will create a key in the HKEY_CURRENT_USER hive and will be named "testkey"
    Now let's move on to see how to set a value.
    For the value we'll need three things: Value path, Value name and value value. We can also precise the value type if not Visual Basic will try to assign the value type depending on the object type.
    My.Computer.Registry.SetValue("HKEY_CURRENT_USER\TestKey", "TestValue", "This is a test value.")

    Tip: Type "," and Visual Basic will show a list of value types.

    The sample:
    The sample contain two part, one for creating keys and the other to create values.
    To create a key just put the named of the key and it'll be created in the Current_User folder.
    To assign a value, type the complete path, for example "HKEY_CURRENT_USER\mykey" and then the value name then the value content and click add to create it.

    2- How to read a registry value

    The next thing is to read what we wrote!
    This is so simple, just put the following line.
    You'll need to have the Path and the name of the value.
    Dim readValue As String
    readValue = My.Computer.Registry.GetValue _
    ("HKEY_CURRENT_USER\TestKey", "TestValue", Nothing)
    MsgBox("The value is " & readValue)

    If you wish to do more complex things, like getting the keys in a hive and getting the values of keys...
    Then you should see the registry viewer sample. (Download the source code to get it)

    3- How to delete a registry key or value

    We finish by deleting what we added.
    To do this it's easy!
    The following line will delete a key
    My.Computer.Registry.CurrentUser.DeleteSubKey("TestKey")

    To delete a value
    my.Computer .Registry .CurrentUser.DeleteValue("Test value")


    4- Changing a value or a key

    Changing a value can be somewhat difficult.
    Dim autoshell = My.Computer.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
    '' Set the value to 0
    autoshell.SetValue("autorestartshell", 0)
    autoshell.Close()
    After opening a subkey (don't forget true! as it give you permission to delete), we can use the autoshell in order to change any value in the following subkey.

    5- Hints to use registry with VB.net

    We can count the values in a hive
    My.Computer.Registry.CurrentUser.ValueCount.ToString()

    But also the keys
    My.Computer.Registry.CurrentUser.SubKeyCount.ToString()

    And check if a value exist
    If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\MyKey", _
    "TestValue", Nothing) Is Nothing Then
    MsgBox("Value does not exist.")
    Else
    MsgBox("Value exist.")
    End If

    6- The registry reader (VB.net)

    I have included an application with the source code. This one will resume all what we have done.
    It's like the registry editor of Windows but still view only and can't edit values.

    Download the source code


    The Zip file contains:
    -The sample source code
    -The registry viewer application
    -The readme.txt file
    -The tutorial.txt file

    Still have question:
    If you have any problem or you found a bug, go to http://thedotnetsource.blogspot.com/ and post a comment in the tutorial where you are having the problem.
    If you have a general question, post it here

    Friday, March 28, 2008 6:29 PM

All replies

  • Hi Omar,

     

    Glad to see your clear and considerate tutorial again.

     

    It will be very beneficial to many community members.

     

    I make it sticky.

     

    Best regards,

    Martin

    Wednesday, April 2, 2008 9:16 AM
  •  

    After Deleting a registry key,  I am trying to display the remaining registry keys.  When I do a subkeycount, I am getting a negative number.  This number does not go away until I add another registry key, either manually, or programatically.  I only get this error when deleting from Local Machine,  Not from current user.  Thoughts?  Up until I delete a key, I am able to add and edit the keys and they display just fine.  The subkeycount comes back with the correct number.
    Wednesday, April 16, 2008 7:12 PM
  • Perhaps you are getting the number of the function result
    any code will help understand more :)

    Full dot net tutorials with code sources : http://thedotnetsource.blogspot.com
    Thursday, July 10, 2008 12:00 PM
  • Hi Martin,

    I am writing a compliance checker for windows, here is an example:

    Dim readValue As String
            readValue = My.Computer.Registry.GetValue _
            ("hkey_local_machine\system\currentcontrolset\services\tcpip\parameters\", "synattackprotect" , Nothing)
            If readValue <> "" Then
                MsgBox("The value is" & readValue)
            Else
                MsgBox("The key does not exists")
            End If

    but at some times the if the "synattackprotect" does not exists it generates an error, Kindly suggest on handling this exception.

    Regards,
    Chintan.
    www.wipro.com

    Saturday, January 30, 2010 4:05 PM