What does .NET give me, that Win32 does NOT?
.net, c++, winapi, windows
Solution
The answer is quite simple: A higher level of abstraction and decoupling from the "real" things behind the scenes. That's why .NET can be implemented on other operating systems.
In fact this is all possible without .NET but it isn't practicable. Short Example: The WCF in .NET gives you a first class IPC and SOA Framework that everybody can use. It is built in functionality. In win32 you get the same self coding, with third party libraries or whatever. The user base is small, you don't have that big community supporting you with your issues, and it is hard to implement at all. The .NET Framework gives you these things out of the box.
For a vast amount of applications .NET will speed the develop time and make the development just cheaper.
For special kind of applications the opposite is true. E.G. it is (nearly) impossible to develop real time applications with .NET because GC on Level 2 freezes all your threads.
Supplemental: The .NET framework 4.5 includes a augmented garbage collector. It enables a multithreaded background garbage collection for the server garbage collector ( enabled with the <gcServer> element in app.config) which doesn't freeze the application threads.
Unfortunately the Mono garbage collector is not nearly that advanced, so the basic statement is still true for Mono.
Problem
What would the usage of .NET give me, that i don't have using Win32 - and sometimes maybe googling for some 50-100 Lines of code i can reuse? I am developing Win32 since it exists (> 15 years). Its straight forward and very robust, although sometimes it needs some more calls than you'd expect, and of course you need to keep track of handles etc. But our (250.000 LOC) application is installed in less then 1 Minute and it very rarely has any compatibility problems. I have followed several discussions on SO about .NET versus Win32 (i.e. Win32 vs .Net). But they don't answer this questions.