
Eu descobri issoO Windows 7 não permite a execução automática em unidades USB.
É possível contornar isso (de forma segura) configurando uma tarefa com o Agendador de Tarefas, que é acionado quando o drive USB é inserido? À primeira vista, não consegui encontrar nenhum evento relacionado ao Visualizador de Eventos.
Responder1
Eu tive a mesma pergunta que você e resolvi algo com o PowerShell (scripts integrados do Windows) usando técnicas do Scripting Guy Blogaquieaqui. O script é executado continuamente como um processo em segundo plano, que você pode iniciar no logon do sistema com o agendador de tarefas. O script será notificado sempre que uma nova unidade for conectada e então fizer alguma coisa (aqui você configura o script em vez da tarefa). Como ele está basicamente pausado enquanto aguarda a próxima unidade conectada, você não deve achar que ele consome muitos recursos. Aqui vou eu:
1) Inicie o Powershell ISE, que pode ser encontrado no menu Iniciar em Acessórios/Windows Powershell.
2) Copie e cole o seguinte no Powershell.
#Requer -versão 2.0 Register-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange write-host (get-date -format s) "Script inicial..." fazer{ $newEvent = Wait-Event -SourceIdentifier volumeChange $eventType = $newEvent.SourceEventArgs.NewEvent.EventType $eventTypeName = switch($eventType) { 1 {"Configuração alterada"} 2 {"Chegada do dispositivo"} 3 {"Remoção do dispositivo"} 4 {"acoplamento"} } write-host (get-date -format s) "Evento detectado =" $eventTypeName if ($eventType -eq 2) { $driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName $driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").NomeDoVolume write-host (get-date -format s) "Nome da unidade =" $driveLetter write-host (get-date -format s) "Rótulo da unidade =" $driveLabel # Executa o processo se a unidade corresponder às condições especificadas if ($driveLetter -eq 'Z:' -e $driveLabel -eq 'Espelho') { write-host (get-date -format s) "Iniciando tarefa em 3 segundos..." start-sleep -segundos 3 processo inicial "Z:\sync.bat" } } Remove-Event -SourceIdentifier volumeChange } while (1-eq1) #Loop até o próximo evento Unregister-Event -SourceIdentifier volumeChange
3) Você precisa modificar o script acima para informar ao script qual unidade procurar e o que executar. As duas linhas a serem alteradas são:
if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
Meu disco rígido USB chamado 'Mirror' está definido como unidade Z:. Você poderia simplesmente usar
if ($driveLabel -eq 'MyDiskLabel')
se não se importasse com a carta.start-process "Z:\sync.bat"
Caminho de qualquer tarefa que você deseja realizar. No meu exemplo, criei um arquivo em lote na minha unidade USB que inicia de 3 a 4 tarefas de backup, mas pode ser qualquer coisa.
4) Quando terminar, salve seu script em algum lugar (extensão .ps1) e crie uma tarefa no Agendador de tarefas para que seu script seja executado em segundo plano. O meu é assim:
- Acionador: Ao fazer logon
- Ação: Iniciar um programa
- Programa/script: powershell
- Adicione argumentos: -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
5) Voilà!
6) Coisas extras: Se você deseja que sua janela de script fique oculta, use estes argumentos:
- Adicione argumentos: -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
Se você deseja gerar as mensagens do script em um arquivo de log (que é sobrescrito sempre que o script é iniciado, ou seja, no logon), use a seguinte ação de tarefa:
- Programa/script: cmd
- Adicione argumentos: /c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script log.txt"
Sempre que quiser encerrar o script oculto em execução, você pode encerrar o processo “Powershell” no Gerenciador de Tarefas.
Responder2
Não. Você não pode usar o Agendador de Tarefas.
O único evento registrado que é acionado quando você conecta seu dispositivo USB é iniciar o serviço 'Enumeração de dispositivos portáteis'. Mas você não pode usá-lo no Gerenciador de Tarefas porque o mesmo evento é acionado quandoqualquerserviço é iniciadoeparou. (Além disso, o evento não será acionado se o serviço já estiver em execução quando você conectar o dispositivo.)
Responder3
Remover USB com segurançapossui um recurso: pode iniciar um programa quando um dispositivo USB é inserido.
Outro recurso de remoção segura de USB que o distingue de softwares semelhantes é iniciar qualquer aplicativo não apenas após conectar um dispositivo, mas também antes de removê-lo. O recurso de execução automática permite configurar backup de dados antes de desconectar um disco rígido removível, executar o Total Commander com o conteúdo do pen-drive, desmontar automaticamente uma unidade TrueCrypt criptografada antes de desconectar a mídia USB, etc.
Responder4
Não acho que um agendador de tarefas seja a ferramenta adequada. Você precisa de algo que responda sempre que um novo dispositivo USB for adicionado. Isso exigiria um aplicativo especializado que pudesse detectar novos dispositivos USB e, portanto, substituiria o recurso de execução automática do Windows.
Sim, tal aplicação é possível. Seria um desafio criar, no entanto.
Usar o agendador de tarefas significa que você vai iniciar a execução automática repetidamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente e novamente (bem , você entendeu) novamente. Você precisaria de um mecanismo para evitar o uso da execução automática duas vezes. E você precisa de um mecanismo que detecte se há uma execução automática disponível ou não, caso contrário você acabará com mensagens de erro eternas. É como bater na parede com um martelo, esperando que haja um prego no meio. O agendador não saberia quando começar e quando parar.