¿Por qué hay distintos “Microsoft Visual C++ Redistributables” instalados en mi PC?


image
Seguramente ha notado que al visualizar la lista de programas instalados, existen varias versiones de “Microsoft Visual C++ Redistributables”, tanto para 32bits (x86) como para 64bits (x64), y quizás desee desinstalarlas.


¿Qué es “Visual C++ Redistributable”?

Quizás no lo sepa, pero muchos programas son escritos utilizados el IDE de Microsoft, Visual Studio, que soporta distintos lenguajes de programación tales como  C#, C/C++, etc. en otras palabras, el entorno de desarrollo de Microsoft ofrece la posibilidad de escribir, editar y probar el código fuente ahí mismo, sin embargo este entorno de desarrollo dependiendo de la versión, genera ejecutables (compilados) que requieren de las bibliotecas de código compartido sean compatibles, es decir, el programa utiliza una serie de archivos (Redistributables) que contienen código para tareas específicas y bastante optimizadas que ahorra al desarrollador/programador la tarea de estar volviendo a escribir más código. Estos archivos comúnmente tienen la extensión .DLL (Bibliotecas de Enlazado Dinámico de sus siglas en inglés), que seguramente habrá notado que abundan en la carpeta C:\Windows\System32.

Cuando se tiene que distribuir un software creado en este IDE, los desarrolladores tienen que hacer una elección: integrar las dependencias (DLLs) en el instalador de su aplicación, o pueden optar por anexar el instalador estándar de dichas dependencias, denominadas Redistributables. La mayoría elige este último método debido a que asegura que sean archivos firmados digitalmente por Microsoft, las cuales además pueden ser actualizadas oficialmente y que estén exentos de cualquier manipulación (infección de virus, alterados por terceros para realizar otros propósitos, etc.)

Esos paquetes de Redistributables son creados por los de Microsoft, quienes además los prueban y actualizan con correcciones de errores y correcciones de riesgos de seguridad. Estos redistributables son instalados una vez (con actualizaciones automáticas), pero sirven para la ejecución de muchos programas compatibles con la versión instalada.

¿Cómo llegaron a aparecer tantos?

Algunos de estos paquetes redistribuibles vienen instalados con el sistema operativo que tengamos instalado (Windows XP, 7, 8.1 10 …), y algunos son instalados automáticamente junto a programas que instalemos, tales como video juegos, editores de audio, etc. en los cuales algunos optan por preguntar al usuario antes de instalarlos, pero algunos son instalados silenciosamente debido a que son necesarios para que funcionen dichos programas.

¿Puedo desinstalarlos?

Desde luego que sí, pero es recomendable dejarlos instalados, porque algunos programas que requieran de dicha versión de DLLs del paquete redistribuible que desee desinstalar, dejarán de funcionar lanzando un error de que cierto archivo DLL no existe. Y luego como consecuencia, quizás busque en internet dicho archivo DLL, y quizás cayendo en el error de muchos usuarios, visitar páginas no oficiales de Microsoft de donde descargarlos quién sabe si estén infectados con algún tipo de virus, o incluso peor, un ransomware.

¿Dónde puede obtener tales redistributables?

Quizás si ya desinstaló algunos de ellos se haya topado con ese error de falta de DLLs para correr alguno de sus programas, entonces lo más recomendable es instalar la versión correspondiente al DLL que su programa necesita.

Esta es una lista de algunos de los paquetes redistribuibles:

Tenga en cuenta que las DLL se versionan con números inmediatamente inferiores a la versión del IDE, por ejemplo para el paquete redistribuible 2015, generalmente la DLL faltante mencionará ser de versión VC14 (sufijo 140), y así según corresponda, algunos ejemplos VC9 (2010), VC11 (2012). Además tenga en cuenta cual instalar según la naturaleza de arquitectura del programa (32bits “x86” o 64bits “x64”).

image

Por ejemplo, la anterior imagen muestra un error al querer ejecutar el programa python.exe el cual requiere de los DLL correspondientes a la versión 2013 (msvcr120.dll). Entonces lo mejor será instalar el paquete Microsoft Visual C++ 2013 Redistributable correspondiente, y si no sabe si su programa (ejecutable .exe) es de 32bits o 64bits, solo presione Ctrl-Shift-Esc y en el administrador de tareas que se mostrará busque el nombre del ejecutable, ahí menciona qué versión de arquitectura utiliza, sólo en el caso de tener instalado Windows de 64bits de lo contrario, obviamente será de 32bits, porque un programa de 64bits no puede ser ejecutado en una versión de Windows de 32bits.

imageComo puede mirar en la imagen, python.exe es de 32bits, por lo tanto se elige el paquete de x86 que es la adecuada.

Conclusión

Desde los inicios de Windows, éste incluye DLLs (bibliotecas de enlazado dinámico) que ya incluyen código reutilizable, como las famosas WinAPI, que nos dan acceso a lectura de archivos, dispositivos, etc. facilitando al programador la tarea de crear aplicaciones que aprovechen correctamente el sistema operativo.

También existen otras DLLs que no son del paquete de redistribución, aunque son denominados de forma similar, como el caso de los DLL para juegos, DirectX. Pero lo mejor que puede hacer es obtener dichos DLLs del instalador con el cual vino su programa, o de fuentes confiables como las oficiales, Microsoft, Unity, Adobe, etc. pero evitando lo más posible obtenerlos desde fuentes desconocidas como páginas que ofrecen DLLs solas, puesto que muchas de ellas podrían estar infectadas de cualquier rutina dañina.

A todas las previas conclusiones, lo mejor, sin duda, es preferible mantener los paquetes redistribuibles instalados, y mejor aún mantener actualizado su instalación de Windows para evitar exponerlo a vulnerabilidades.

Fuente: GHacks