
I've been using Windows for a long time, and have collected vast numbers of little utilities. Some of them are good. For a long time I've been meaning to put up this webpage, telling people which ones they are. I think they're all free to download and use for non-commercial purposes unless otherwise marked, but I may make mistakes.
My current text editor of choice. It's a drop-in replacement for notepad. It loads almost instantaneously, so is great for making quick notes, has search-and-replace, and block indentation. The biggest features it misses are syntax highlighting and macro recording. Note that this is not an emacs or a vim, but I seldom need that and can fall back to more powerful tools when I do. I don't believe that with great power should come great lack of usability.
This control panel applet is an absolute necessity on all versions of Windows. It's the first thing I install on a new machine. Unfortunately, it looks like the latest (officially WinXP-only, I don't know whether that's true) version may suck a bit, so I'm sticking with the previous lot (I'm taking the same view of XP itself. Win2k is currently the only sensible Microsoft OS to be using; if you can get it to install, that is). "Command-prompt here", tab completion in command prompts and icon cache refreshing are probably the most useful aspects.
This adds a page to the "Properties" of each file in explorer which displays a 32-bit number called a CRC (cyclic redundancy check). This is a number which has been stirred up by reading through the contents of the file. If two files have the same number, they probably have the same contents (unless someone's deliberately made them match). Note to self: Do an MD5 version one day.
update: Unfortunately they've decided to attempt to charge for these. They aren't that good. You may be able to find old versions in other locations though, e.g. here for InCtrl5.zip. AllTheWeb.com is good for that kind of search.
UnClean is great for Win2k users. Win2k's "Add/Remove Programs" menu loads every icon of every program you've installed before letting you uninstall anything. This takes ages. UnClean, a freebie from Ziff-Davis, is a replacement which doesn't do that. You should also look at the other listed utilities, many of them (particularly those by Neil Rubenking) are good.
Unix programmers have a lot of tools available to them. Windows programmers should get these attempts to port a large number of them.
Cygwin provides a host environment which pretends to be Unix, MSYS/MinGW tries to be as native as possible. The result is that Cygwin lets you run mainly unmodified Unix apps, whereas MinGW lets you write Unix-like apps which compile to standalone Windows exes.
Even if you aren't a programmer, you should install Cygwin with XFree86, since you can then download and (with some patience) run some programs written for linux.
http://gcc.gnu.org/
(http://www.bloodshed.net/devcpp.html),
http://www.winprog.org/tutorial/msvc.html,
http://www.cs.virginia.edu/~lcc-win32/,
http://www.borland.com/bcppbuilder/freecompiler/,
http://www.openwatcom.org/,
http://www.digitalmars.com/
See http://www.thefreecountry.com/compilers/cpp.shtml for a fuller list.
TODO: Rewrite this to emphasise the IDE/compiler split
I should start by admitting that for the past few years, Microsoft Visual C++ has pretty much ruled the windows-programming roost (or the Intel Compiler for fast code). This has been upgraded to version 7 and re-branded as the .NET C++ compiler, which Microsoft gives away in the (ifl:).NET Framework SDK. You won't have an IDE with that, but see below.
Note that Microsoft has never cared about standards compliance in their C++ compiler. If you want a standards-compliant compiler, the best of the best seems to be the (ifl:)Comeau compiler is probably what you should try (it has good warnings too). But for the warnings you can often stick code snippets into their online trial, and GCC is pretty hot on its heels now for compliance.
GCC is an excellent free compiler (version 3.2 is said to rival the Intel compiler), and it's (ifl:)Open Source. It's pretty standards-compliant these days and gives good warnings. I strongly recommend getting it in the form of Dev-C++, which is a great IDE which basically clones MSVC's IDE, but driving the GNU tools. It includes a decent MSVC-alike frontend to the GNU debugger (gdb). It's looking pretty full-featured these days and I'm starting to use it for real projects. On the other hand, I've just discovered (ifl:)MinGW Developer Studio which uses wxWindows and MinGW to make a very compelling free-as-in-beer IDE which runs on both Windows and Linux.
If you only want to program in C, LCC-Win32 is another good Free/Open Source compiler, with a nice IDE and Windows resource editor. There's a "heavily-modified" version of LCC with a good-looking IDE called (ifl:)Pelles C which can also do PocketPC development apparently (quite a claim, I must verify this). Borland and Watcom have made their old versions freely available, and Watcom are in the process of going Open Source. For a long time, Watcom was highly spoken of. These days, the UI and docs both look a bit long-in-the-tooth, and is hard to recommend really. With Borland, you only get the compiler, without any decent docs or IDE. GCC suffers from this a bit too. Borland also make you jump through huge numbers of compiler-specific hoops. Note also that Microsoft give away a very powerful debugger (e.g. better than the one used in MSVC), in their (ifl:)Microsoft Debugging Tools. You should also get the (ifl:)Platform SDK, which is basically the most up-to-date header files which Microsoft have released for the ever-changing Windows platform. They're both big downloads I'm afraid.
Lucian Wischik has an excellent page specific to the Borland C++Builder, including how to interface it to Microsoft's debugging format (as well as lots of other interesting stuff).
The Digital Mars compiler is "a drop-in replacement for Symantec C++, or can be used independently". I think it started from the Zortech/Symantec C++ codebase. It seems to be one of the nicer compilers, and claims to have the fastest compile/link times. The more advanced language features such as member templates and argument dependent ("koenig") lookup have only been added quite recently (on 2 Mar 2003), so might be slightly flaky. The downloadable version doesn't have an IDE or debugger. Don't be too put off by the "this has never been tested" licence agreement.
If you're into Java (I'm not a Java programmer, but I quite like Java), GCC 3 can now compile it to native code I believe, which may or may not interest you. In terms of IDEs, make sure you're taking full advantage of Java's support for refactoring and using a tool designed for refactoring. I believe that the Open Source eclipse.org IDE fits the bill, though I must admit, if the refactoring support is there, I haven't worked out how to get at it yet (I haven't tried that hard though).
I've also had Borland's (ifl:)JBuilder recommended to me as an alternative to eclipse. The Personal edition is free to download, but as with C++Builder, not Open Source. Oh, and it's a 50 meg download, plus another 50 meg for the docs. But you're a Java programmer, so you're used to that.
This is a quite elegant and powerful scripting language, with a large and fast-growing community supporting it. I lurve Python. It also binds nicely to (ifl:)wxWindows via (ifl:)wxPython, giving powerful and portable native-look UI support, which can be quickly ported to C++. ActiveState's Python distribution is very friendly, and includes some extra Windows-specific stuff (win32all). I'm not sure of all the differences between it and the python.org distro, but ActivePython seems good to me.
Actually, it looks like Microsoft now provide a tool for creating installers based on the "Windows installer" mechanism, but only for Visual Studio owners. I haven't tried it, but you can get it here if you're one: (ifl:)Visual Studio Installer. It doesn't look very good to me though.