This problem has cropped up in the last few days. There has been much discussion about it, including on Slashdot here and here. The general consensus seems to be that the best solution is to use Rubicode's DefaultApp as documented on Daring Fireball.