Speaking from an outsiders point of view (I am not a programmer), I do not dispute what you programmers feel on salaries. That would chase people overseas.
But if one looks at why youngsters are not entering the arena (if they were, there would be no shortage), the use of MS and other proprietary products do not conjure up innovation and the willingness to try doing some programs.
I feel that if opensource was used in schools, where kids could get their hands onto source code, there would be a lot more takers as they can learn from code done by others. They would be able to change and experiment, and derive the thrill of getting things to work as they would like. Instead, because of the use of canned proprietary, it remains a black hole until you hit tertiary education.
MS has free tools available to code with. All their express products for web, windows and database development is free. There are tons of open source projects as well (just look at codeplex). So your statement above is not valid. Granted that MS's opensource project are not that many as say Java and so forth, I'd rather go for quantity over quality. I've had to get some students to start working on a project which was on the MS platform, and they were up and running in no time.