Windows

32bit native Windows applications share the same PE (portable executable) file structure and are supposed to run properly under any 32bit/64bit Windows desktop or server operating system.

64bit Windows application have PE32+ file structure and they require 64bit Windows operating system.

Popular programming languages capable of producing Windows 32/64 bit Windows applications are C++, VB and Delphi.

The main difference between Windows and .NET applications is the fact that Windows applications contain compiled (unmanaged) code whilst .NET applications contain IL code which is compiled to native CPU code by CLR (common language runtime). This is also why .NET application can be easily decompiled if not protected and encrypted.

.NET

.NET applications have different file structure and require Microsoft .NET framework to run. NET applications are developed in .NET compatible languages such as VB.NET, C# or J# and contain IL (intermediate language) code. Microsoft .NET framework is available for Windows 98 and later operating systems.

.NET applications can be compiled as x86, AnyCpy and x64 applications and thus target different Windows platforms.

x86/AnyCpu .NET applications have PE file structure and can be run on any 32/64 bit Windows operating system with support for .NET framework.

x64 .NET applications have PE32+ file structure and can be run only on 64bit Windows operating systems with .NET framework.