#!/bin/bash

#/**
#         BuildToOrder
#@brief   Script de ejemplo para realizar una configuracion del sistema operativo antes de generar imagen o de restaurado.
#@brief   Activa el uso de los contralodres de disco más usados en windows 7.
#@brief (puede  usarse como complemento para el programa de creación de imágenes o de restauración).
#@param 1 disco  
#@param 2 particion 
#@return  
#@TODO  
#@exception 
#@version 1.0.4 - Discos ide + SATA.
#@author 
#@date   2012-10-05
#@version 1.1.1b - Funciona para Windows8 y Windows 10. Si la clave no existe (tiene valor vacío) se crea.
#@date   2020-05-04


#Control de parametros.
PROG="$(basename $0)"
if [ $# -ne 2 ]; then
    ogRaiseError $OG_ERR_FORMAT "Formato: $PROG ndisco nparticion"
    exit $?
fi


MNTDIR=$(ogMount $1 $2)

# filtro Tipo de sistema operativo.
OSTYPE="$(ogGetOsType $1 $2)"


case "$OSTYPE" in 
    Windows)
        echo "Filtro versión de sistema operativo windows."
		TYPE=$(ogGetOsVersion $1 $2)
		case "$TYPE" in
		   *Windows\ XP) 
				echo "Versión de sistema operativo Windows XP no soportado"
				exit
			;;
		   *Windows\ 7*)  
				# Claves a modificar
				KEYS="intelide pciide msahci iaStorV iaStor LSI_SAS"
				
		   	;;
		    *Windows\ *8*|*10*)
				# Claves a modificar
                                KEYS="intelide pciide storahci iaStorV iaStorAC iaStorAVC LSI_SAS"
			;;
		esac

        echo "$TYPE"
        CONTROLSET="ControlSet001 ControlSet002"
        for C in $CONTROLSET;
            # Si no existe la rama de registro continuo a la siguiente.
            [ "$(ogListRegistryKeys $MNTDIR SYSTEM '\'${C})" == "" ] && continue

            for K in $KEYS; do
                FULLK='\'$C'\Services\'$K'\Start'
                VALUE=$(ogGetRegistryValue $MNTDIR SYSTEM "$FULLK")
                # Si el valor está vacío la creo.
                if [ "$VALUE" == "" ]; then
	                ogDeleteRegistryValue $MNTDIR SYSTEM "$FULLK"
	                ogAddRegistryValue $MNTDIR SYSTEM "$FULLK" DWORD
                fi
                ogSetRegistryValue $MNTDIR SYSTEM "$FULLK" '0'
                echo " * $C $K enabled"
            done
        done
    ;;
    Linux)
        echo "Versión de Sistema Operativo GNU/Linux no soportado"
    ;;
    *)
    	echo "Sistema Operativo no soportado"
    ;;
esac
