I am opening the control panel of my laptop. I see there are many versions of Visual C++, I am not a computer technician. So Why are there so many versions of Visual C++ Redistributable installed on the machine? Do they have any effect on the software running on my computer?
Typically, a C/C++ app compiled with Visual Studio will use shared copies of Visual Studio's C runtime libraries.
So even though Visual Studio may not be installed, C/C++ apps built with a particular version will need the runtime libs for that version. Apps build with different versions, installed on the same computer, will require the matching runtime libs. Hence, different versions of the Visual C++ Redistributable.
Every other video game and many other things feel compelled to install their special version of it. You can't do anything about it, and if you take them off, something may stop working. It takes up a small amount of disk space, but apart from that, just leave it alone. If you need disk space, there are better ways to reclaim some of it.
This is a big miss on M$'s part. Nah, say it ain't so? Here, a simple backwards compatibility management and some interface rollups would keep it small yet allow old stuff to use the latest copy, or at worst, a few key versions would work for everything. Alas, they did not go that route when they designed it.
What's missing is for Microsoft to simply allow redistributing the runtime libraries directly or even statically linking them. The only reason developers run the redistributable installer at installation is because you're not supposed to do that.
It won't prevent 3rd party installers from installing copies of the runtime libraries. It won't even stop reinstalling versions already present. Theoretically updating the runtime library.
I have multiple copies of runtime libraries installed from the same VS version. On my main development computer only the 2015-2019 runtime libraries don't have multiple copies installed. Only 2: 1 for x86 and the other for x64.
I'd rather have multiple runtime libraries installed from differing versions of VC++ than each program statically linked with the needed runtime routines.
A single interface (one DLL only) for the runtime routines would be a great idea, but I doubt it will ever happen.
> Do they have any effect on the software running on my computer?
Well the different versions are there so that the programs which use different versions will you know, actually carry on working as expected when something else installs a newer or older run-time.