How very bizarre.

Migrating from Exchange 2003 to 2010 SP2. Somewhere along the way – after uninstalling Exchange 2003, we started having directory / GAL problems. New Outlook profiles could not be set up, and the GAL could not be downloaded into already-working Outlooks.

After some exploration (and fixing some Public Folder related issues ( http://clintboessen.blogspot.co.uk/2011/04/exception-active-directory-user-wasnt.html ) I noticed that the Microsoft Exchange Address Book service was not started. I tried to start it, and found Event ID 7000 from the service control manager, with description

“The Microsoft Exchange Address Book service failed to start due to the following error:
This version of Microsoft Exchange Address Book is not compatible with the version of Windows you’re running. Check your computer’s system information to see whether you need a x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher.”

I looked at the executable path, and went to check out the properties of the file (“C:\Program Files\Microsoft\Exchange Server\V14\bin\Microsoft.Exchange.AddressBook.Service.exe”), and I noticed there were no PE properties / attributes, and also, that the file was only 2kb in size. Actuallly the same size as the .config file alongside it. Weird. I thought I’d take a look inside.
I opened up Notepad, and drag’n’dropped the EXE file into notepad, and sure enough, the .exe file was actually the same as the .config file.

It seems that one of the updates has incorrectly modified the wrong file. It has overwritten Microsoft.Exchange.AddressBook.Service.exe with what should instead be in Microsoft.Exchange.AddressBook.Service.exe.config.

The server started out as Exchange 2010 RTM, then it had SP1 applied, and then SP2. This problem was noticed shortly after SP2.

I dug out the correct .exe file from the SP2 extracted files, under setup\serverroles\common, and replaced it, then started the service. All is now well again.