What the heck was MS thinking doing this, snagging us developpers with such a nonsense!
It's a long story and I'm not exactly sure my opinions would be well received in this context. However, I do believe there is a systematic attack on Shareware and Freeware develpers in all this. Many of the decisions --especially very expensive code signing methods-- place smaller software companies and freelance developers at profound disadvantage as software develpment becomes more and more complex with each new generation of windows.
I work mainly in C-99 and with each new generation of windows there's more and more stuff I can't access, pressing me to upgrade to .NET and C++, both of which produce monumentally bloated softwares. Things I used to do in 100k now asks me to consume megabytes of code, most of which is basically inert throughout the execution of the program. Using the .NET framework, for example, incorporates close to 200k of start up code into every program.
With Win7, Microsoft has introduced the new dynamic of isolating code from data. Although this is not entirely a bad thing there are many cases where it leads to much more complex code as now you must allow for highly variable data locations in each file you create. This is fine for an editor or data base app, but it's a major pain for settings and add-ins. As soon as you create a sub-folder under the program's own folder, other than at install time, it is redirected. You can can overcome this to some extent by including an appropriate Manifest in your program resources but it's still there.
The new right place for data is exposed by %homepath% which is the same as clicking your user name in the start menu.
The shat in this is that now your code has to be OS version aware. Of course this means extensive re-writing of older code that happily used the GetCurrentDirectory call to store their data. But it also means that backups are simpler having a single point source for recursive folder actions.
Of late I've been working on a couple of projects --well one rather complex one, with many parts, actually. I cobbled the original "test version" together under XP in a few days. Now, almost a year later, I'm still trying to get the behaviors I need under Win7 without constant nags from UAC and all the bizarre permission issues that go with it. Oddly enough, it's Win7's so called "security" that I am most often defeating to get things done; things I did with complete ease in XP.
Sometimes I really do wish they'd continued development on the Win2k codebase instead of switching to the Vista one... Life was a lot simpler back then.