def get_product_value(self, value_name, wanted_type=None):
        '''
        For the product section of the registry return the name value.

        Args:
            value_name (str): Registry value name.
            wanted_type (str):
                The type of value wanted if the type does not match
                None is return. wanted_type support values are
                ``str`` ``int`` ``list`` ``bytes``.

        Returns:
            value: Value requested or ``None`` if not found.
        '''
        if not self.__reg_products_handle:
            return None
        subkey, search_value_name = os.path.split(value_name)
        try:
            if subkey:

                handle = win32api.RegOpenKeyEx(  # pylint: disable=no-member
                            self.__reg_products_handle,
                            subkey,
                            0,
                            win32con.KEY_READ | self.__reg_32bit_access)
                item_value, item_type = self.__reg_query_value(handle, search_value_name)
                win32api.RegCloseKey(handle)  # pylint: disable=no-member
            else:
                item_value, item_type = \
                    win32api.RegQueryValueEx(self.__reg_products_handle, value_name)  # pylint: disable=no-member
        except pywintypes.error as exc:  # pylint: disable=no-member
            if exc.winerror == winerror.ERROR_FILE_NOT_FOUND:
                # Not Found
                return None
            raise

        if wanted_type and item_type not in self.__reg_types[wanted_type]:
            item_value = None
        return item_value