Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- from collections import namedtuple
- # https://pypi.python.org/pypi/winregal/1.0.1
- from winregal import RegKey, RegValue
- def get_component_versions():
- Row = namedtuple('Component', 'name md5_hash arch language version')
- path = r'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages'
- with RegKey(path) as key:
- for item in key:
- if isinstance(item, RegKey):
- with item:
- row = item.to_dict().get('InstallName').split('~')
- try:
- yield Row(*row)
- except TypeError:
- continue
- def get_software_versions():
- path = r'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
- Row = namedtuple('Software', 'name version')
- with RegKey(path) as key:
- for item in key:
- if isinstance(item, RegKey):
- with item:
- result = item.to_dict()
- if all(map(lambda x: x in result, ['DisplayName', 'DisplayVersion'])):
- yield Row(result['DisplayName'], result['DisplayVersion'])
- def write_csv(fname, iterable):
- with open(fname, 'wt') as fd:
- writer = csv.writer(fd, delimiter=',')
- component = next(iterable)
- fields = component._fields
- writer.writerows([fields, component])
- for component in iterable:
- writer.writerow(component)
- # component: list(get_component_versions())
- # software list(get_software_versions())
- # write_csv(r'C:\Users\admin\Desktop\components.txt', get_component_versions())
- # write_csv(r'C:\Users\admin\Desktop\software.txt', get_software_versions())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement