Solved

How to determine if a given program is installed?

Posted on 2006-06-26
7
166 Views
Last Modified: 2010-04-23
Generically, how can you tell if a given program is installed from within a VB.NET application/service/console?

Specifically, how can you tell if Adobe's Acrobat Reader is installed?
0
Comment
Question by:shadowfist1105
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 96

Accepted Solution

by:
Bob Learned earned 50 total points
ID: 16985684
You can look in the Windows registry at HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader.

Bob
0
 

Author Comment

by:shadowfist1105
ID: 16985698
Ok, how would you suggest that I Look in the Registry for this?  What class in .NET will let me look for that?
0
 

Author Comment

by:shadowfist1105
ID: 16985754
Nevermind, I just found some old code that access the registry for a service (gives it a description).

Thanks, not exactly the type of answer i was looking for, but it will work.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 96

Expert Comment

by:Bob Learned
ID: 16985783
What kind of answer were you looking for?

Bob
0
 

Author Comment

by:shadowfist1105
ID: 16985832
well, one that didn't involve looking in the registry for something that might be installed with that specific verbage.  One that would use a class like System.Diagnostics.Process (obviously not that one).  It doesn't matter that much, I just hate the registry.

Thank you for your time.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 16985898
The Process class can only find references to running programs, and not installed ones.

Here is a class from my bag-o-tricks:

Imports Win32 = Microsoft.Win32

Public Class InstalledSoftware

  Public Shared Function GetList() As SortedList

    Const UNINSTALL$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

    ' Look in the registry at the Uninstall location.
    Dim rootKey As Win32.RegistryKey = _
     Win32.Registry.LocalMachine.OpenSubKey(UNINSTALL)

    ' Create a structure big enough for all the key entries under Uninstall.
    Dim listSoftware As New SortedList(rootKey.SubKeyCount - 1)

    ' Look through all the keys for the 'DisplayName' value.
    ' If 'DisplayName' not found, then just use the key name for
    ' the display name.
    For Each keyName As String In rootKey.GetSubKeyNames

      ' Get all sub-keys under Uninstall.
      Dim subKey As Win32.RegistryKey = rootKey.OpenSubKey(keyName)

      ' Start by using the key name as the display name.
      Dim displayName As String = keyName

      ' Look for the 'DisplayName' value, and use that name,
      ' if found.
      For Each valueName As String In subKey.GetValueNames

        If valueName.Equals("DisplayName") Then
          displayName = subKey.GetValue(valueName, "")

          Exit For
        End If

      Next valueName

      ' Add the display name to the list.
      listSoftware.Add(displayName, displayName)

    Next keyName

    ' Return the sorted list to the caller.
    Return listSoftware

  End Function  

End Class

Example usage:
  Dim list As SortedList = InstalledSoftware.GetList()

Bob
0
 

Author Comment

by:shadowfist1105
ID: 16985910
Thank you very much, that will help a great deal.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question