I have tested under Windows XP and both worked well.
However, anytime ShellExecute fails, you can see what's going wrong by taking a look at the error code (see return value in the ShellExecute function documentation.