Home » Questions » Computers [ Ask a new question ]

Is it possible to do safe USB autorun with Task Scheduler on Windows 7?

Is it possible to do safe USB autorun with Task Scheduler on Windows 7?

I found out that Windows 7 doesn't allow autorun on USB drives.

Asked by: Guest | Views: 284
Total answers/comments: 2
Guest [Entry]

"I had the same question as you, and worked out something with powershell (windows built-in scripting) using techniques from the Scripting Guy Blog here and here. The script runs continuously as a background process, which you can start at system logon with task scheduler. The script will be notified whenever a new drive is plugged and then do something (here you configure the script rather than the task). Since it is basically paused while waiting for the next plugged drive, you should not find it takes up much resources. Here I go:

1) Start Powershell ISE, which can be found in your start menu under Accessories/Windows Powershell.

2) Copy paste the following into Powershell.

#Requires -version 2.0
Register-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange
write-host (get-date -format s) "" Beginning script...""
do{
$newEvent = Wait-Event -SourceIdentifier volumeChange
$eventType = $newEvent.SourceEventArgs.NewEvent.EventType
$eventTypeName = switch($eventType)
{
1 {""Configuration changed""}
2 {""Device arrival""}
3 {""Device removal""}
4 {""docking""}
}
write-host (get-date -format s) "" Event detected = "" $eventTypeName
if ($eventType -eq 2)
{
$driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
$driveLabel = ([wmi]""Win32_LogicalDisk='$driveLetter'"").VolumeName
write-host (get-date -format s) "" Drive name = "" $driveLetter
write-host (get-date -format s) "" Drive label = "" $driveLabel
# Execute process if drive matches specified condition(s)
if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
{
write-host (get-date -format s) "" Starting task in 3 seconds...""
start-sleep -seconds 3
start-process ""Z:\sync.bat""
}
}
Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier volumeChange

3) You need to modify the script above to tell the script what drive to look for, and what to execute. The two lines to change are:

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

My usb hard drive named 'Mirror' is set as the Z: drive. You could just use if ($driveLabel -eq 'MyDiskLabel') if you didn't care about the letter.
start-process ""Z:\sync.bat""

Path of whatever task you want to do. In my example, I have created a batch file on my USB drive which start 3-4 backup tasks, but it could be anything.

4) When you're done, save your script somewhere (extension .ps1), then go create a task in Task Scheduler to have your script run in background. Mine looks like this:

Trigger: At log on
Action: Start a program
Program/script: powershell
Add arguments: -ExecutionPolicy Unrestricted -File ""D:\Stuff\Backup script.ps1""

5) Voilà!

6) Extra stuff:
If you want your script window to be hidden, use these arguments:

Add arguments: -WindowStyle Hidden -ExecutionPolicy Unrestricted -File ""D:\Stuff\Backup script.ps1""

If you want to output the script messages into a log file (that gets overwritten everytime the script starts, i.e. at log on), use the following task action:

Program/script: cmd
Add arguments: /c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File ""D:\Stuff\Backup script.ps1"" > ""D:\Stuff\script log.txt""

Anytime you want to end the running hidden script, you can end the ""Powershell"" process in Task Manager."
Guest [Entry]

"USB Safely Remove has such a feature: it can start a program when a USB device is inserted.

Another USB Safely Remove feature that
distinguishes it from similar software
is starting any applications not only
after connecting a device, but also
before removing it. The autorun
feature allows you to set up data
backup before disconnecting a
removable hard drive, to run Total
Commander with the contents of the
pen-drive, automatically unmount an
encrypted TrueCrypt drive before
disconnecting the USB media, etc."