def test_list_keys_non_existing(self): """ Test the list_keys function using a non existing registry key """ expected = (False, "Cannot find key: HKLM\\{0}".format(FAKE_KEY)) self.assertEqual(win_reg.list_keys(hive="HKLM", key=FAKE_KEY), expected)
def test_list_keys_non_existing(self): ''' Test the list_keys function using a non existing registry key ''' expected = (False, 'Cannot find key: HKLM\\{0}'.format(FAKE_KEY)) self.assertEqual(win_reg.list_keys(hive='HKLM', key=FAKE_KEY), expected)
def test_list_keys_existing(self): ''' Test the list_keys function using a well known registry key ''' self.assertIn( 'Microsoft', win_reg.list_keys( hive='HKLM', key='SOFTWARE' ) )
def test_list_keys_existing(self): """ Test the list_keys function using a well known registry key """ self.assertIn("Microsoft", win_reg.list_keys(hive="HKLM", key="SOFTWARE"))
def versions(): """ Figure out what versions of .NET are installed on the system Returns: dict: A dictionary containing two keys: - versions: A list of versions installed on the system - details: A dictionary with details about the versions installed on the system """ hive = "HKLM" key = "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP" ver_keys = win_reg.list_keys(hive=hive, key=key) def dotnet_45_plus_versions(release): if release >= 528040: return "4.8" if release >= 461808: return "4.7.2" if release >= 461308: return "4.7.1" if release >= 460798: return "4.7" if release >= 394802: return "4.6.2" if release >= 394254: return "4.6.1" if release >= 393295: return "4.6" if release >= 379893: return "4.5.2" if release >= 378675: return "4.5.1" if release >= 378389: return "4.5" return_dict = {"versions": [], "details": {}} for ver_key in ver_keys: if ver_key.startswith("v"): if win_reg.value_exists( hive=hive, key="\\".join([key, ver_key]), vname="Version" ): # https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#find-net-framework-versions-1-4-with-codep install = win_reg.read_value( hive=hive, key="\\".join([key, ver_key]), vname="Install" )["vdata"] if not install: continue version = win_reg.read_value( hive=hive, key="\\".join([key, ver_key]), vname="Version" )["vdata"] sp = win_reg.read_value( hive=hive, key="\\".join([key, ver_key]), vname="SP" )["vdata"] elif win_reg.value_exists( hive=hive, key="\\".join([key, ver_key, "Full"]), vname="Release" ): # https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#find-net-framework-versions-45-and-later-with-code install = win_reg.read_value( hive=hive, key="\\".join([key, ver_key, "Full"]), vname="Install" )["vdata"] if not install: continue version = dotnet_45_plus_versions( win_reg.read_value( hive=hive, key="\\".join([key, ver_key, "Full"]), vname="Release", )["vdata"] ) sp = "N/A" else: continue service_pack = " SP{0}".format(sp) if sp != "N/A" else "" return_dict["versions"].append(version) return_dict["details"][ver_key] = { "version": version, "service_pack": sp, "full": "{0}{1}".format(version, service_pack), } return return_dict
def versions(): ''' Figure out what versions of .NET are installed on the system Returns: dict: A dictionary containing two keys: - versions: A list of versions installed on the system - details: A dictionary with details about the versions installed on the system ''' hive = 'HKLM' key = 'SOFTWARE\\Microsoft\\NET Framework Setup\\NDP' ver_keys = win_reg.list_keys(hive=hive, key=key) def dotnet_45_plus_versions(release): if release >= 461808: return '4.7.2' if release >= 461308: return '4.7.1' if release >= 460798: return '4.7' if release >= 394802: return '4.6.2' if release >= 394254: return '4.6.1' if release >= 393295: return '4.6' if release >= 379893: return '4.5.2' if release >= 378675: return '4.5.1' if release >= 378389: return '4..5' return_dict = {'versions': [], 'details': {}} for ver_key in ver_keys: if ver_key.startswith('v'): if win_reg.value_exists(hive=hive, key='\\'.join([key, ver_key]), vname='Version'): # https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#find-net-framework-versions-1-4-with-codep install = win_reg.read_value(hive=hive, key='\\'.join([key, ver_key]), vname='Install')['vdata'] if not install: continue version = win_reg.read_value(hive=hive, key='\\'.join([key, ver_key]), vname='Version')['vdata'] sp = win_reg.read_value(hive=hive, key='\\'.join([key, ver_key]), vname='SP')['vdata'] elif win_reg.value_exists(hive=hive, key='\\'.join([key, ver_key, 'Full']), vname='Release'): # https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#find-net-framework-versions-45-and-later-with-code install = win_reg.read_value(hive=hive, key='\\'.join( [key, ver_key, 'Full']), vname='Install')['vdata'] if not install: continue version = dotnet_45_plus_versions( win_reg.read_value(hive=hive, key='\\'.join([key, ver_key, 'Full']), vname='Release')['vdata']) sp = 'N/A' else: continue service_pack = ' SP{0}'.format(sp) if sp != 'N/A' else '' return_dict['versions'].append(version) return_dict['details'][ver_key] = { 'version': version, 'service_pack': sp, 'full': '{0}{1}'.format(version, service_pack) } return return_dict