The case of the missing AutoPlay handler

by Matt 20. May 2009 18:42

Two things. I’ve recently got back from holiday, and I’ve recently installed Windows 7 RC on a 64 bit machine. My wife will attest that these are two completely unrelated things.

Until it’s time to load up the holiday snaps.

After plugging in my nice shiny new Canon EOS 1000D (a camera for grown ups!) I was slightly disappointed that I didn’t get a nice shiny new Device Stage UI. Ho hum. What I did get was the usual AutoPlay dialog allowing me to (amongst other things) import into Windows Live Photo Gallery. Tip top.

The Windows AutoPlay dialog

And then, later, I tried to do the same, but this time, by just inserting the SD card. And the AutoPlay dialog didn’t have the Import using Windows Live Photo Gallery option. I could view, or import using Windows (don’t do it, it’s rubbish) but I couldn’t import via Windows Live Photo Gallery. And I really wanted to.

This meant only one thing. Time to go spelunking in the registry.

Now, the AutoPlay registration scheme is crazy complicated. It’s all under HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\AutoplayHandlers. There you’ll find a key called EventHandlers, and under here are a bunch of keys that represent the events that can cause AutoPlay to kick in.

The one I’m interested in is ShowPicturesOnArrival. Looking at the values there, we can see that I’ve got 4 values:

The list of AutoPlay handlers for ShowPicturesOnArrival

These values refer to keys defined under AutoplayHandlers\Handlers. When the ShowPicturesOnArrival event occurs, these handlers are added to the AutoPlay dialog. And under these handler keys is a bunch of registration.

Now, I get the option to view with Windows Live Photo Gallery, but not to import. So, I’d lay odds that MSLiveShowPicturesOnArrival is fine, but there’s something fishy with MSLivePhotoAcquireDropHandler.

But let’s back up a step, first.

Remember I said it was a 64 bit machine? Well, that’s important. For two reasons.

Because AutoPlay has two sets of registration. One under that HKLM\Software\Microsoft\… and a duplicate set under HKLM\Software\Wow6432Node. This key is what 32 bit applications see as HKLM\Software. And for whatever reason, AutoPlay is a 32 bit process, and so uses the 32 bit registration data.

Similarly, Windows Live Photo Gallery is a 32 bit process, and so gets installed to C:\Program Files (x86)\Windows Live\… And the registration for MSLivePhotoAcquireDropHandler for 32 bit applications points to C:\Program Files\Windows Live.

AutoPlay registration pointing at C:\Program Files\Windows Live\...

A simple change to Action to point it at %ProgramFiles(x86)% and my AutoPlay option returned.

So, to rephrase for brevity (and Google’s) sake: Import with Windows Live Photo Gallery AutoPlay option was missing on 64 bit Windows 7, because the AutoPlay handler was incorrectly registered. Go to HKLM\Software\Wow6432Node\ Microsoft\Windows\CurrentVersion\explorer\AutoplayHandlers\ Handlers\MSLivePhotoAcquireDropHandler\Action and change “%ProgramFiles%” to “%ProgramFiles(x86)%”.

A quick search later, and there were a couple of other poorly registered Windows Live items – I think they’re just localised names. I’ve attached a .reg file that will sort these out.

And it worked for the camera, because that uses the MSLivePhotoAcqHWEventHandler, which is registered correctly.

Tags: , , ,


Month List


Comment RSS