31 July 2007

Windows registry design

By Andrew Clifford

Is the Windows registry a bad design? Judge for yourself.

As somebody who designs software, I am cautious of criticising other people's design. It is hard to understand all the requirements that have fed into a design, and all the issues that the designers have had to resolve. Any of my observations are surely things the designers must have thought about, and any problems I find surely less serious than the alternatives.

One of the heated debates that crops up now and again is the design of the Windows registry. The registry is a collection of files that act as a database of configuration information for Windows.

I would not like to criticise a core component of such a successful product. So instead, let me tell you what happened, and you can judge for yourself.

I was using a Windows XP machine at home, trying to get some PC TV software working, when Windows crashed, and I needed to reboot.

When I tried to reboot, I got a message saying that the registry was corrupt, and that Windows could not boot.

Is it good design that an error in an application should be able to corrupt the operating system so badly that it will not reboot?

I looked up the error message. Apparently I should be able to recover a non-corrupt version of the registry by using the command-line recovery console.

I tried this, but I have an original equipment manufacturer (OEM) copy of Windows which came with the PC. If you run the recovery console on OEM Windows, it mysteriously sets up new password-protected accounts and locks you out.

I do not know why this is, and the Microsoft pages provide no explanation. I suspect it is something to do with licensing, and that Microsoft consider that protecting their licensing is more important than my time, my data and my right to use the products that I have bought from them. I never saw "Warning: this is a crippled version of Windows that lacks critical recovery capabilities" on the box. Is it reasonable to remove the recovery capabilities from OEM versions?

I had to reinstall the operating system. It only took an hour or two.

I did not have to reformat the disk, and all my data and program files were still there after the reinstall. Some of the programs, such as OpenOffice.org, worked fine. But not Microsoft programs. I had to reinstall Microsoft Office because it relies on registry entries that had been wiped out during the reinstallation. Another hour or two.

Should recovering from a corruption in one application wipe out the configuration of another?

To help you decide whether the Windows registry is a bad design, I will summarise. The Windows registry is a single point of failure. It is a source of significant and unnecessary coupling between applications and the operating system, and between one application and another. The Windows registry makes Microsoft software harder to recover than its competitors. Important recovery capabilities are deliberately switched off on a very large number of PCs.

Is the Windows registry a bad design? I am cautious of criticising other people's design, so I will let you judge for yourself.