Raymond Chen

Sad but true: Once you document a file format, it becomes a de facto API. The Windows 95 team learned this the hard way when they set out to replace Program Manager with Explorer. Not only were the settings in the PROGMAN.INI file documented, so too was the binary file format of *.GRP files. The binary file format was included for diagnostic purposes: If you have a corrupted GRP file, you can use the binary file format documentation to try to recover what you can out of it. But many people treated this documentation not as a FYI, but as a backdoor API. Instead of using the formal DDE interface for creating program groups and icons, they just directly edited the PROGMAN.INI file and the applicable GRP files to get the icons and groups they wanted. Oh wait, and then you need to reboot in order for the backdoor API to take effect, because all you did was modify the on-disk files, not the in-memory copy held by PROGMAN.EXE. Of course, when Windows 95 replaced Program Manager with Explorer, these programs found themselves modifying the data files of a program that no longer was running. Special code had to be added to Explorer to read settings from PROGMAN.INI and even detect that a new GRP file was added and convert it into shortcuts on the Start menu.

I wouldn’t be surprised if that code is still lying around, just in case somebody pulls out an old application from 1994 and installs it.


Discussion is closed.

Feedback usabilla icon