Software registration keys are a necessary evil these days for everyone who buys legitimate software (while the pirates continue to merrily steal their copies).

This post on Coding Horror provides some solid lessons on how a bit of sensible design can really make users lives easier.

Read the full post for other examples.