 <p>This is not an inherent limitation in Windows, problems like these are environmental. A basic check-list:</p> <ul> <li>Try this with a <a href="http://download.linnrecords.com/test/mp3/tone.aspx">known-good MP3 file</a>. That test file is encoded at 320 kbps. This helps eliminate a specific problem with your files, like a wonky DRM scheme that only permits playback on an approved player.</li> <li>Make sure you run this code on an STA thread, the kind provided by a Winforms or WPF app. <em>Not</em> a console mode app, it requires the kind of code you find in <a href="http://stackoverflow.com/a/21684059/17034">this post</a>.</li> <li>Beware of having non-standard ACM drivers installed. There is a <em>lot</em> of junk out there, always treat "codec packs" with strong distrust. Review the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 registry key, that's where ACM drivers are registered.</li> <li>And last but certainly not least, you are blind as a bat as long as you are ignoring the return value of mciSendString(). When it fails, it produces an error code that tells you the reason.</li> </ul> <p>A simple implementation of an error checker method:</p> <pre><code> private static void checkMCIResult(long code) { int err = (int)(code &amp; 0xffffffff); if (err != 0) { throw new Exception(string.Format("MCI error {0}", err)); } } </code></pre> <p>Usage:</p> <pre><code> public static void open(string file) { string command = "open \"" + file + "\" type MPEGVideo alias MyMp3"; checkMCIResult(mciSendString(command, null, 0, 0)); } </code></pre> <p>There are a lot of possible MCI errors, you'll find them listed in MMSystem.h file in the Windows SDK "include" directory on your machine. Like C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\MMSystem.h. Start at MCIERR_INVALID_DEVICE_ID, subtract 256 from the error code. Always mention your Windows and VS version btw.</p>