¿Es posible realizar una ejecución automática USB segura con el Programador de tareas en Windows 7?

¿Es posible realizar una ejecución automática USB segura con el Programador de tareas en Windows 7?

Descubrí queWindows 7 no permite la ejecución automática en unidades USB.

¿Es posible evitar esto (de forma segura) configurando una tarea con el Programador de tareas, que se activa cuando se inserta la unidad USB? A primera vista no pude encontrar ningún evento relacionado con el Visor de eventos.

Respuesta1

Tenía la misma pregunta que tú y resolví algo con powershell (scripting integrado en Windows) usando técnicas del blog Scripting Guy.aquíyaquí. El script se ejecuta continuamente como un proceso en segundo plano, que puede iniciar al iniciar sesión en el sistema con el programador de tareas. El script será notificado cada vez que se conecte una nueva unidad y luego haga algo (aquí usted configura el script en lugar de la tarea). Dado que básicamente está en pausa mientras espera la siguiente unidad conectada, no debería notar que consume muchos recursos. Aquí voy:

1) Inicie Powershell ISE, que se puede encontrar en el menú de inicio en Accesorios/Windows Powershell.

2) Copie y pegue lo siguiente en Powershell.

#Requiere -versión 2.0
Registro-WmiEvent -Clase win32_VolumeChangeEvent -SourceIdentifier cambio de volumen
write-host (get-date -format s) "Script inicial..."
hacer{
  $newEvent = Espera-Evento -SourceIdentifier cambio de volumen
  $tipo de evento = $newEvent.SourceEventArgs.NewEvent.EventType
  $nombreTipoEvento = cambiar($TipoEvento)
    {
    1 {"Configuración cambiada"}
    2 {"Llegada del dispositivo"}
    3 {"Eliminación del dispositivo"}
    4 {"acoplamiento"}
    }
  write-host (get-date -format s) " Evento detectado = " $eventTypeName
  si ($tipo de evento -eq 2)
  {
    $driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
    $driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").NombreVolumen
    write-host (get-date -format s) " Nombre de la unidad = " $driveLetter
    write-host (get-date -format s) " Etiqueta de unidad = " $driveLabel
    # Ejecutar el proceso si la unidad coincide con las condiciones especificadas
    if ($driveLetter -eq 'Z:' -y $driveLabel -eq 'Mirror')
    {
        write-host (get-date -format s) "Iniciando tarea en 3 segundos..."
     inicio-sueño -segundos 3
        proceso de inicio "Z:\sync.bat"
    }
  }
  Eliminar-Evento -SourceIdentifier cambio de volumen
} while (1-eq1) #Loop hasta el próximo evento
Anular registro-Evento -SourceIdentifier cambio de volumen

3) Debe modificar el script anterior para indicarle qué unidad buscar y qué ejecutar. Las dos líneas a cambiar son:

  • if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')

    Mi disco duro USB llamado 'Mirror' está configurado como unidad Z:. Podrías usarlo if ($driveLabel -eq 'MyDiskLabel')si no te importara la carta.

  • start-process "Z:\sync.bat"

    Ruta de cualquier tarea que quieras realizar. En mi ejemplo, he creado un archivo por lotes en mi unidad USB que inicia de 3 a 4 tareas de respaldo, pero podría ser cualquier cosa.

4) Cuando haya terminado, guarde su secuencia de comandos en algún lugar (extensión .ps1), luego cree una tarea en el Programador de tareas para que su secuencia de comandos se ejecute en segundo plano. El mío se ve así:

  • Activador: al iniciar sesión
  • Acción: Iniciar un programa
  • Programa/guión: powershell
  • Agregue argumentos: -ExecutionPolicy Unrestricted -Archivo "D:\Stuff\Backup script.ps1"

5) ¡Voilá!

6) Cosas adicionales: si desea que la ventana de su secuencia de comandos esté oculta, use estos argumentos:

  • Agregue argumentos: -Estilo de ventana oculto -Policía de ejecución sin restricciones -Archivo "D:\Stuff\Backup script.ps1"

Si desea generar los mensajes del script en un archivo de registro (que se sobrescribe cada vez que se inicia el script, es decir, al iniciar sesión), utilice la siguiente acción de tarea:

  • Programa/guión: cmd
  • Agregue argumentos: /c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script log.txt"

Cada vez que desee finalizar la ejecución del script oculto, puede finalizar el proceso "Powershell" en el Administrador de tareas.

Respuesta2

No. No puedes usar el Programador de tareas.

El único evento registrado que se activa cuando conecta su dispositivo USB es iniciar el servicio 'Enumeración de dispositivos portátiles'. Pero no puedes usarlo en el Administrador de tareas porque el mismo evento se activa cuandocualquierse inicia el servicioyinterrumpido. (Además, el evento no se activará si el servicio ya se está ejecutando cuando conecta su dispositivo).

Respuesta3

Quitar USB de forma seguratiene esta característica: puede iniciar un programa cuando se inserta un dispositivo USB.

Otra característica de USB Safely Remove que lo distingue de software similar es iniciar cualquier aplicación no solo después de conectar un dispositivo, sino también antes de eliminarlo. La función de ejecución automática le permite configurar una copia de seguridad de los datos antes de desconectar un disco duro extraíble, ejecutar Total Commander con el contenido del pendrive, desmontar automáticamente una unidad TrueCrypt cifrada antes de desconectar el medio USB, etc.

texto alternativo

Respuesta4

No creo que un programador de tareas sea la herramienta adecuada. Necesita algo que responda cada vez que se agrega un nuevo dispositivo USB. Eso requeriría una aplicación especializada que pueda detectar nuevos dispositivos USB y, por lo tanto, reemplazaría la función de ejecución automática de Windows.

Sí, tal aplicación es posible. Sin embargo, sería un desafío crearlo.

Usar el programador de tareas significa que simplemente vas a iniciar la ejecución automática una y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra y otra (bueno , te haces una idea) de nuevo. Necesitaría un mecanismo para evitar el uso de la ejecución automática dos veces. Y necesita un mecanismo que detecte si hay una ejecución automática disponible o no; de lo contrario, terminará con mensajes de error eternos. Es como golpear la pared con un martillo, esperando que haya un clavo en el medio. El planificador no sabría cuándo empezar y cuándo parar.

información relacionada