"Although bundled with some Microsoft operating systems (e.g., Windows Server 2003), the .NET platform is not yet a native part of Windows. Most of the Windows applications that users work with every day are still made of unmanaged, Win32 code. Some of these applications, including Internet Explorer, host the .NET Common Language Runtime (CLR) and subsequently run managed code. To say it all, any Win32 application can host the CLR, which is exposed to applications as a plain COM object. In Windows XP and Windows Server 2003, the OS loader is also aware of .NET applications and distinguishes managed programs from traditional, unmanaged executables. While interaction between managed and unmanaged code is definitely possible and fully supported, the core Windows system and the .NET framework remain neatly separated worlds partially unaware of each other."

Enterprise .NET Community: Manage With the Windows Shell: Write Shell Extensions with C#