def test_value_exists_non_existing(self): """ Tests the value_exists function using a non existing registry key """ self.assertFalse( win_reg.value_exists( hive="HKLM", key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion", vname="NonExistingValueName", ) )
def test_value_exists_existing(self): """ Tests the value_exists function using a well known registry key """ self.assertTrue( win_reg.value_exists( hive="HKLM", key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion", vname="CommonFilesDir", ) )
def test_value_exists_no_vname(self): ''' Tests the value_exists function when the vname does not exist ''' mock_error = MagicMock( side_effect=win32api.error(123, 'RegQueryValueEx', 'Empty Value')) with patch('salt.utils.win_reg.win32api.RegQueryValueEx', mock_error): self.assertFalse( win_reg.value_exists( hive='HKLM', key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion', vname='NonExistingValuePair'))
def test_value_exists_empty_default_value(self): ''' Tests the value_exists function when querying the default value ''' mock_error = MagicMock( side_effect=win32api.error(2, 'RegQueryValueEx', 'Empty Value')) with patch('salt.utils.win_reg.win32api.RegQueryValueEx', mock_error): self.assertTrue( win_reg.value_exists( hive='HKLM', key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion', vname=None))
def test_value_exists_key_not_exist(self): ''' Tests the value_exists function when the key does not exist ''' mock_error = MagicMock( side_effect=win32api.error(2, 'RegOpenKeyEx', 'Unknown error')) with patch('salt.utils.win_reg.win32api.RegOpenKeyEx', mock_error): self.assertFalse( win_reg.value_exists( hive='HKLM', key='SOFTWARE\\Microsoft\\Windows\\CurrentVersion', vname='CommonFilesDir'))
def test_value_exists_no_vname(self): """ Tests the value_exists function when the vname does not exist """ mock_error = MagicMock( side_effect=win32api.error(123, "RegQueryValueEx", "Empty Value")) with patch("salt.utils.win_reg.win32api.RegQueryValueEx", mock_error): self.assertFalse( win_reg.value_exists( hive="HKLM", key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion", vname="NonExistingValuePair", ))
def test_value_exists_empty_default_value(self): """ Tests the value_exists function when querying the default value """ mock_error = MagicMock( side_effect=win32api.error(2, "RegQueryValueEx", "Empty Value")) with patch("salt.utils.win_reg.win32api.RegQueryValueEx", mock_error): self.assertTrue( win_reg.value_exists( hive="HKLM", key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion", vname=None, ))
def test_value_exists_key_not_exist(self): """ Tests the value_exists function when the key does not exist """ mock_error = MagicMock( side_effect=win32api.error(2, "RegOpenKeyEx", "Unknown error")) with patch("salt.utils.win_reg.win32api.RegOpenKeyEx", mock_error): self.assertFalse( win_reg.value_exists( hive="HKLM", key="SOFTWARE\\Microsoft\\Windows\\CurrentVersion", vname="CommonFilesDir", ))
def reset(reg_vars): """ Create an existing key for testing """ try: if not reg_util.value_exists( hive=reg_vars.hive, key=reg_vars.key, vname=reg_vars.vname): reg_util.set_value( hive=reg_vars.hive, key=reg_vars.key, vname=reg_vars.vname, vdata=reg_vars.vdata, ) yield finally: if reg_util.key_exists(hive=reg_vars.hive, key=reg_vars.key): reg_util.delete_key_recursive(hive=reg_vars.hive, key=reg_vars.key)
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