Home » System & API » How to list all installed apps
How to list all installed apps
Posted on January 4, 2009
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 'System & API - How to list all installed apps Option Explicit Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, lpData As Any, lpcbData As Long) As Long Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _ (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _ ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" _ (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, _ ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, _ lpftLastWriteTime As FILETIME) As Long Private Const HKEY_LOCAL_MACHINE = &H80000002 Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 'Private Const ERROR_NO_MORE_ITEMS = 259& Private Const REG_SZ = 1 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Dim RetArray() As String Sub main() Call GetInstalledApps Dim I As Long For I = LBound(RetArray) To UBound(RetArray) Debug.Print RetArray(I) Next I End Sub Public Sub GetInstalledApps() Dim hParentKey As Long Dim hSubKey As Long Dim lIndex As Long Dim sAppID As String Dim lAppID As Long Dim sAppName As String Dim lAppName As Long Dim ValueType As Long Dim DummyTime As FILETIME Dim UbRetArray As Long 'Dim QVErr As Long 'Dim sErr As String 'Dim lErr As Long UbRetArray = -1 If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Uninstall", _ 0, KEY_ENUMERATE_SUB_KEYS, hParentKey) = 0 Then sAppID = Space(64) lAppID = 64 Do While RegEnumKeyEx(hParentKey, lIndex, sAppID, lAppID, 0, vbNullString, 0, DummyTime) = 0 sAppID = Left(sAppID, lAppID) If RegOpenKeyEx(hParentKey, sAppID, 0, KEY_QUERY_VALUE, hSubKey) = 0 Then lAppName = 0 If RegQueryValueEx(hSubKey, "DisplayName", 0, ValueType, ByVal 0, lAppName) = 0 Then If ValueType = REG_SZ Then sAppName = Space(lAppName) RegQueryValueEx hSubKey, "DisplayName", 0, 0, ByVal sAppName, lAppName sAppName = Left(sAppName, lAppName - 1) UbRetArray = UbRetArray + 1 ReDim Preserve RetArray(UbRetArray) RetArray(UbRetArray) = sAppName End If End If RegCloseKey hSubKey hSubKey = 0 End If lIndex = lIndex + 1 sAppID = Space(64) lAppID = 64 Loop RegCloseKey hParentKey End If 'GetInstalledApps = RetArray End Sub |
Related posts:
- How to get all installed Mail Applications
- How to clear Start Menu -> Run MRU list
- How to Get Default Printer Name
- How to check which Office Components are installed
- How to Get The Desktop Path
- How to List Network Computers
- How to get Caption and Thread ID of Window under cursor
- How to Copy List Box Content To Another List Box\Combo Box
- How to Change Windows Registered Name
- How to change System Resolution
Enjoy this article?
Filed under: System & API
Leave a comment
Sponsors
Link Back to us
Donations
If you are benefited from this site, please donate a small contribution to us. It will help to maintain this site better.