
Here's the REAL fix
Make Microsoft bear some responsibility for the costs of their errors. Though it was a very successful business model innovation and helped Microsoft make lots of money so they could pretty much take over the computers of the world, in practice it has been really bad. In fact, my firm belief is that if MS were suddenly required to pay for all the damages caused by their errors and carelessness, the company would be bankrupt. (Their other major business model innovation was selling upstream, to the manufacturers, so they could basically ignore the actual users of their software. Actually, it's an exaggeration to give MS full credit for either of these, but MS perfected them.)
So here's a way to implement a solution: Cut Microsoft into separate pieces and require they compete with each other. Each company would start with a copy of the source code and an equal fraction of the employees and facilities and equipment, and after that they have to compete. They can even work on a standard version of Windows (as seen by the installed programs), but any information they exchange (for example about the Windows APIs and how they work) has to be exchanged in public.
Rather than eternal bandages, the daughter companies would have strong incentives to offer real solutions. For example, MS-A might add a data recovery service to provide some protection against loss or theft. MS-B might offer a more expensive OS but with backup services and security signatures imbedded into your data to protect it from theft. MS-C might go the route of focusing on performance speed without accepting any increase in liability. Whatever. The point is that we would have real choice = real freedom and as the code bases diverged, we would get more real security, too.