Introduction
Many of us don't know what softwares are installed and strive to check them programatically. Here's a simple way to get that list. This is very useful when you want to create an installer for your projects, which helps you in checking the right version of minimal software requirements for your projects on clients' machine.
Background
There's no complicated code in this. If you have basic knowledge of Windows Registry, that's enough. But be sure you make a backup of your registry before doing anything with it as that is a good and safe way of programming.
Using the Code
I have taken a simple Console Application in C#, created an object for registry accessing the right path, i.e. SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.
This registry path has all the list of softwares installed on your machine. Following is the code to achieve it in C#.
In C#
class Program
{
static void Main(string[] args)
{
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") +
" " + sk.GetValue("DisplayVersion"));
}
}
}
Console.ReadLine();
}
}
In VB.NET
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Win32
Namespace SEList
Class Program
Private Shared Sub Main(args As String())
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") + " " + sk.GetValue("DisplayVersion"))
End Using
Next
End Using
Console.ReadLine()
End Sub
End Class
End Namespace
Points of Interest
This code snippet is handy for developers working on creating installers for projects, which gives them flexibility to check the correct version of software installed on client machine to avoid confusion later. It's a good way of creating the installers. This is useful for all kinds of applications developed in Microsoft .NET environment.
History
- 30th September 2008: Initial post
This is my first article on CodeProject. Hope to post more useful code snippets in future. Leave me your suggestions and comments as these are the things which boost us and help us in giving more relevant and error free code snippets.