The difference in it working in DMP (short for DirectMusic Producer), and in other windows programs may actually be right in front of your nose.
First off, are you trying to play it back using the MIDI device labled "Microsoft GS Software Wavetable Synthesizer" (usually refered to on the VGMusic.com forums as the "M$-GS softsynth)? Specifically, the one you can use with Windows Media Player, and is automatically installed if you're using a motherboard that has onboard sound?
If so, that's the problem. While yes, it uses the GM.DLS file for its instruments, it is NOT the exact same synth that is used by default in DMP, though the name may be similar. The DLS synth used in DMP to do its work is called simply the "Microsoft Synthesizer", or if you're using WinME (and is probably the same in Win2k/XP), then it's called the "Microsoft DLS Synthesizer".
The Microsoft DLS Synthesizer is capable of handling DLS-Level2 files if you are runing DirectX version 8 or higher. However, installing DX8 or higher will probably NOT allow the M$-GS synth (the one Media Player can use) to use DLS-Level2 files, since Windows treats it as a totally separate synth than the Microsoft DLS Synth.
Also, the Microsoft DLS Synthesizer, like all DirectMusic-compliant synthesizers, is completely invisible to normal MIDI players (like Windows Media Player, the Crescendo MIDI plugin for internet browers, etc.). The only exceptions to this rule are programs like Winamp versions 2.7x and 2.8x (Winamp3 doesn't seem to do it, what a shame), because their MIDI plugins are specifically written to interface with the DirectMusic engine. Since most MIDI players are not coded to do that, they turn a blind eye to the DirectMusic spectrum of synths.