<p>I frequently come across Windows programs that bundle in MSVCRT (or their more current equivalents) with the program executables.  On a typical PC, I would find many copies of the same .DLL's.   My understanding is that MSVCRT is the C runtime library, somewhat analogous to glibc/libc.so under *nix.</p>
<p>Why do Windows programs have to bring along their C libraries with them, instead of just sharing the system-wide libc?</p>
<hr />
<p>Update: thanks to Shog9, I started to read about SxS, which has further opened up my eyes to the DLL linkage issues (DLL Hell) - <a href="https://web.archive.org/web/20160305220537/http://blogs.msdn.com/b/martynl/archive/2005/10/13/480880.aspx" rel="nofollow noreferrer">Link</a> is one useful intro to the issue...</p>

Programs are linked against a specific version of the runtime, and that required version is
not
guaranteed to exist on the target machine.  Also, matching up versions used to be problematic.
In the Windows world, it's very bad manners to expect your users to go out and find and install a separate library to use your application.  You make sure any dependencies not part of the host system are included with your app.
In the linux world this isn't always as simple, since there's a much larger variation for how the host system might look.