One of Microsoft's more brilliant ideas in recent years was to hire Mark Russinovich and absorb his Sysinternals company into Microsoft.  Mark still maintains an interesting blog about the internals of Windows at Technet, and is a now Technical Fellow at Microsoft.  When I first heard about Microsoft buying Sysinternals, I must admit that my heart sank, but MS have preserved the legacy of the company, and many of the useful tools the company provided are still available today.  In particular, a great utility called DebugView is one that I have probably been using for 10 years.

If you are a Windows developer and haven't used DebugView, then you really ought to get to know it.  DebugView intercepts messages generated by applications using API calls like OutputDebugString and displays them in real-time in a scrolling display window.  I know that some debuggers also do the same, but DebugView is a small self-contained app that can be copied onto a remote machine (perhaps on a customer's site), and can collect debug output from a live environment which may not have developer tools installed.  It works with Windows apps that have a GUI, or those that run as a service or from the console, so it is an invaluable part of the developer's toolbox.