I built a program in C# .NET 2.0 that works great also under framework 3.0 and 3.5.
But if .NET Framework 4.0 is the only framework installed, it does not working, i
This doesn't work without configuration by design. .NET 4 uses a different runtime, and when you load a .NET 2 assembly, by default, it loads it in version 2 of the CLR. You can reconfigure it to prevent this behavior, and have it load in v4 of the CLR - but it's not always a good idea. It causes the code you write to be run on a framework different than the one on which it was designed and tested, which can potentially be problematic.
It's typically easier and better to just install the proper requirements on the system. Installing .NET 2 is very easy (and comes by default on Vista+). This has the advantage of running your program on the framework for which it was designed.