コード例 #1
0
 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",
         )
     )
コード例 #2
0
 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",
         )
     )
コード例 #3
0
 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'))
コード例 #4
0
 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))
コード例 #5
0
 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'))
コード例 #6
0
 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",
             ))
コード例 #7
0
 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,
             ))
コード例 #8
0
 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",
             ))
コード例 #9
0
ファイル: test_reg.py プロジェクト: mamh-mixed/saltstack-salt
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)
コード例 #10
0
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
コード例 #11
0
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