This used to be the case but I believe that was changed with Visual Studio 2010:
I just checked my VS 2008 install's documents, and these rules apply to it as well
*If you use the static MS C++ runtime (or don't use the MS runtimes at all), you just distribute your EXE.
* If you use the dynamic MS C++ runtime, then either:
* 1) you distribute your EXE and force the user to run the appropriate VCRedist_xxx.exe.
* 2) you distribute your EXE bundled with the required MS runtime DLLs.
In no case is it illegal to distribute the programs you make...