DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   VB.NET (http://www.daniweb.com/forums/forum58.html)
-   -   vb.net 08 Reading data from multiple reg keys (http://www.daniweb.com/forums/thread166523.html)

smelf1 Jan 6th, 2009 8:29 am
vb.net 08 Reading data from multiple reg keys
 
Hi,

In the reg key below there can be 50 different keys, how can i read through each one and get its display name and then show those display names in a lsitbox or combo box.

hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

I am using the code below to get the data in that single key but how do i get all data in display name in each of the multiple keys located in the key folder above

Imports System
Imports Microsoft.Win32

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myCPUDescription As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", "No CPU Found").ToString.Trim
       
 ComboBox1.Items.Add(myCPUDescription)

end sub

Ramy Mahrous Jan 6th, 2009 11:03 am
Re: vb.net 08 Reading data from multiple reg keys
 
Put your key in array
Dim key As String(numberOfKeys)
then loop and once you get value put it into ComboBox or any control you present data into
        Dim registrykeys(5) As String
'fill your keys
        For Each key As String In registrykeys
            ComboBox1.Items.Add(My.Computer.Registry.GetValue(key, "property", "default"))
        Next
Your array may be 2D to maintain the property of keys

smelf1 Jan 6th, 2009 11:13 am
Re: vb.net 08 Reading data from multiple reg keys
 
Quote:

Originally Posted by RamyMahrous (Post 772006)
Put your key in array
Dim key As String(numberOfKeys)
then loop and once you get value put it into ComboBox or any control you present data into
        Dim registrykeys(5) As String
'fill your keys
        For Each key As String In registrykeys
            ComboBox1.Items.Add(My.Computer.Registry.GetValue(key, "property", "default"))
        Next
Your array may be 2D to maintain the property of keys

Hi thanks for the reply.

I am new to vb.net so bear with me : ).

Now in that part of the reg i am looking the keys can be different depending on the installed programs.

So i cannot just add the exact key to read.

Ramy Mahrous Jan 6th, 2009 11:18 am
Re: vb.net 08 Reading data from multiple reg keys
 
Quote:

Put your key in array
Dim key As String(numberOfKeys)
sorry I've mistake in this instead
Dim Keys(numberOfKeys) As string

Ramy Mahrous Jan 6th, 2009 11:20 am
Re: vb.net 08 Reading data from multiple reg keys
 
Give me the keys you want to get and it's properties in that way
Exmaple
Key: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
Property: ProcessorStringName

Don't worry, just show me you want to learn

smelf1 Jan 6th, 2009 11:26 am
Re: vb.net 08 Reading data from multiple reg keys
 
Quote:

Originally Posted by RamyMahrous (Post 772016)
Give me the keys you want to get and it's properties in that way
Exmaple
Key: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
Property: ProcessorStringName

Don't worry, just show me you want to learn

No probs thanks,

The keys are all located in hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall its where the registry stores all the installed programs.

I want to open each key it finds under hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall and display what is in DisplayName in a combobox or text box.

So on my pc i have a program called casecatalyst and its key is under
hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\caseCatalyst4 and in here i am after DisplayName which is Case Catalyst.

So if i only have casecatalyst and say adobe installed the only keys in hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall will be \casecatalyst4 and \adobe.

So i assume i need to be able to open uninstall\ read each key and populate their display names into a combo or text box.

See i need to find all currently installed programs on a pc

smelf1 Jan 7th, 2009 6:58 am
Re: vb.net 08 Reading data from multiple reg keys
 
I found something similar in c#

( static void GetInstalled()
{
      string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
      using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
      {
            foreach (string skName in rk.GetSubKeyNames())
            {
                  using (RegistryKey sk = rk.OpenSubKey(skName))
                  {
                        Console.WriteLine(sk.GetValue("DisplayName"));
                  }
            }
      }
})

can this be changed into .net?

rapture Jan 7th, 2009 10:25 am
Re: vb.net 08 Reading data from multiple reg keys
 
I'm newer to vb.net so the others might change this a bit



    Private Shared Sub GetInstalled()
        Dim uninstallKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
        Using rk As RegistryKey = Registry.LocalMachine.OpenSubKey(uninstallKey)
            For Each skName As String In rk.GetSubKeyNames()
                Using sk As RegistryKey = rk.OpenSubKey(skName)
                    Console.WriteLine(sk.GetValue("DisplayName"))
                End Using
            Next
        End Using
    End Sub

Ramy Mahrous Jan 7th, 2009 10:28 am
Re: vb.net 08 Reading data from multiple reg keys
 
Yes, It could be, understand the C# code, and if you fail to convert any line of code to VB.NET, drop a reply soon.

smelf1 Jan 7th, 2009 10:36 am
Re: vb.net 08 Reading data from multiple reg keys
 
okay i got this now but it returns nothing

Dim uninstallKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
        Dim rk As RegistryKey
        rk = Registry.LocalMachine.OpenSubKey(uninstallKey)
        For Each key As String In rk.GetSubKeyNames()
            Using sk As RegistryKey = rk.OpenSubKey(key)
                Console.WriteLine(sk.GetValue("DisplayName"))
            End Using
        Next
    End Sub


All times are GMT -4. The time now is 7:03 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC