Since I was discussing the Windows 7 Problem Steps Recorder yesterday, it makes sense to address the most common question I get after demonstrating this feature:

Can I use it on Windows Vista / Windows XP / Windows something else?

Well, there’s nothing quite like trying it to find out! So, I copied the binary over to a Windows Vista machine, and gave it a go. And, alas, it didn’t work.

Which of course got me thinking – why not?

My first inclination was that perhaps there was a dependency on some unique feature of Windows 7, so I did some poking around to see if I could find it. But then, during a conversation with my friends Justin and Uday today, Justin turned me on to something I was unaware of: an entry in the WinPE header that determines if we’ll try to run a binary.

You can spot it using PEBrowse Professional: 0x28 bytes into the Optional Header, you find an entry for Major Operating System Version == 0x0006, and 0x2A bytes into the Optional Header, you find an entry for Minor Operating System Version == 0x0001.

And it turns out that this prevents you from running down-level. (The same would be true of, say Notepad.) This isn’t anything proprietary to us – you could do the same. Nobody really talks about it, because the error message you get isn’t … helpful … so I can’t imagine why anybody would want to subject their users to that.

But at least I got to the bottom of it.