You can get a list of all the available software installed on your Windows System. The below Power Shell script will put all the info into a file and in table view so that you can print it out.
You can get this infomoration several ways:
- PowerShell - appears to be most detailed
- CMD via wmic - gives a very basic report
- Python - more to come
PowerShell
- Go to start menu and search for Power Shell -> right-click and open as ADMIN
- The copy/past the below scrip and make any needed changes
- You txt file will end-up at the root of drive C:\ unless you changed the destination
- Code Below will be in table format and the returning information may be truncated to 15 charactors
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > C:\InstalledProgramsPS_todaysdate.txt
- The below code will give you a list op programs in data format. This will return all fields in full view
- you should notice the | Format-Table - AutoSize has been removed
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, InstallLocation, URLUpdateInfo > C:\InstalledProgramsPS_01102019_1433.txt
- Listed below are most of the Window's 7 fields you can get information on.
AssignmentType,Caption, Description,HelpLink,HelpTelephone,IdentifyingNumber,InstallDate,InstallDate2,InstallLocation,InstallSource,InstallState, Language, LocalPackage, Name,PackageCache, PackageCode,PackageName, ProductID, RegCompany, RegOwner, SKUNumber, Transforms, URLInfoAbout, URLUpdateInfo, Vendor,Version, WordCount,
CMD - wmic
- Open your start meny and search CMD -> open as admin
- In the command window type wmic - this start the wmic prompt
- copy/paste the below code - modify as needed to fit your system.
/output:C:\InstalledProgramsWMIC_CurrentDateHere.txt product get name,version
Python
- This is based on Python v2 and not tested on every system
[code]## Python Version 2
# This scripts allows to get a list of all installed products in a windows
# machine. The code uses ctypes becuase there were a number of issues when
# trying to achieve the same win win32com.client
# Code from this publisher (Thanks) - https://ashishpython.blogspot.com/2013/12/listing-all-installed-applications-on.html
from collections import namedtuple
from ctypes import byref, create_unicode_buffer, windll
from ctypes.wintypes import DWORD
from itertools import count
# defined at http://msdn.microsoft.com/en-us/library/aa370101(v=VS.85).aspx
UID_BUFFER_SIZE = 39
PROPERTY_BUFFER_SIZE = 256
ERROR_MORE_DATA = 234
ERROR_INVALID_PARAMETER = 87
ERROR_SUCCESS = 0
ERROR_NO_MORE_ITEMS = 259
ERROR_UNKNOWN_PRODUCT = 1605
# diff propoerties of a product, not all products have all properties
PRODUCT_PROPERTIES = [u'Language',
u'ProductName',
u'PackageCode',
u'Transforms',
u'AssignmentType',
u'PackageName',
u'InstalledProductName',
u'VersionString',
u'RegCompany',
u'RegOwner',
u'ProductID',
u'ProductIcon',
u'InstallLocation',
u'InstallSource',
u'InstallDate',
u'Publisher',
u'LocalPackage',
u'HelpLink',
u'HelpTelephone',
u'URLInfoAbout',
u'URLUpdateInfo',]
# class to be used for python users :)
Product = namedtuple('Product', PRODUCT_PROPERTIES)
def get_property_for_product(product, property, buf_size=PROPERTY_BUFFER_SIZE):
"""Retruns the value of a fiven property from a product."""
property_buffer = create_unicode_buffer(buf_size)
size = DWORD(buf_size)
result = windll.msi.MsiGetProductInfoW(product, property, property_buffer,
byref(size))
if result == ERROR_MORE_DATA:
return get_property_for_product(product, property,
2 * buf_size)
elif result == ERROR_SUCCESS:
return property_buffer.value
else:
return None
def populate_product(uid):
"""Return a Product with the different present data."""
properties = []
for property in PRODUCT_PROPERTIES:
properties.append(get_property_for_product(uid, property))
return Product(*properties)
def get_installed_products_uids():
"""Returns a list with all the different uid of the installed apps."""
# enum will return an error code according to the result of the app
products = []
for i in count(0):
uid_buffer = create_unicode_buffer(UID_BUFFER_SIZE)
result = windll.msi.MsiEnumProductsW(i, uid_buffer)
if result == ERROR_NO_MORE_ITEMS:
# done interating over the collection
break
products.append(uid_buffer.value)
return products
def get_installed_products():
"""Returns a collection of products that are installed in the system."""
products = []
for puid in get_installed_products_uids():
products.append(populate_product(puid))
return products
def is_product_installed_uid(uid):
"""Return if a product with the given id is installed.
uid Most be a unicode object with the uid of the product using
the following format {uid}
"""
# we try to get the VersisonString for the uid, if we get an error it means
# that the product is not installed in the system.
buf_size = 256
uid_buffer = create_unicode_buffer(uid)
property = u'VersionString'
property_buffer = create_unicode_buffer(buf_size)
size = DWORD(buf_size)
result = windll.msi.MsiGetProductInfoW(uid_buffer, property, property_buffer,
byref(size))
if result == ERROR_UNKNOWN_PRODUCT:
return False
else:
return True
apps=get_installed_products()
for app in apps:
print app.InstalledProductName[/code]
You can get more information from here:
https://www.makeuseof.com/tag/list-installed-programs-windows/
