Advertisement
DeaD_EyE

get_windows_software_versions.py

May 15th, 2017
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. import csv
  2. from collections import namedtuple
  3.  
  4. # https://pypi.python.org/pypi/winregal/1.0.1
  5. from winregal import RegKey, RegValue
  6.  
  7.  
  8. def get_component_versions():
  9.     Row = namedtuple('Component', 'name md5_hash arch language version')
  10.     path = r'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages'
  11.     with RegKey(path) as key:
  12.         for item in key:
  13.             if isinstance(item, RegKey):
  14.                 with item:
  15.                     row = item.to_dict().get('InstallName').split('~')
  16.                     try:
  17.                         yield Row(*row)
  18.                     except TypeError:
  19.                         continue
  20.  
  21. def get_software_versions():
  22.     path = r'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
  23.     Row = namedtuple('Software', 'name version')
  24.     with RegKey(path) as key:
  25.         for item in key:
  26.             if isinstance(item, RegKey):
  27.                 with item:
  28.                     result = item.to_dict()
  29.                     if all(map(lambda x: x in result, ['DisplayName', 'DisplayVersion'])):
  30.                         yield Row(result['DisplayName'], result['DisplayVersion'])
  31.                        
  32.  
  33. def write_csv(fname, iterable):
  34.     with open(fname, 'wt') as fd:
  35.         writer = csv.writer(fd, delimiter=',')
  36.         component = next(iterable)
  37.         fields = component._fields
  38.         writer.writerows([fields, component])
  39.         for component in iterable:
  40.             writer.writerow(component)
  41.  
  42. # component: list(get_component_versions())
  43. # software list(get_software_versions())
  44.  
  45. # write_csv(r'C:\Users\admin\Desktop\components.txt', get_component_versions())
  46. # write_csv(r'C:\Users\admin\Desktop\software.txt', get_software_versions())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement