Virii are only one problem and not the worst one really - because it's easy to avoid being an idiot.

Programs written with MS development tools are prone to break because 1) Windows is so complicated that no one really understands it 2) most programmers are not very good 3) C and C++ are inherently dangerous because they produce programs that are like locks that can be jimmied. You deliberately cause a program to fail in a certain way and pop, the door is wide open. The only defense is to hide the doors behind hidden doors. You just have to trust the lockmakers. History shows that trusting Windows is not a winning strategy.