Desinstale el software a través del registro

Sé que esto se ha preguntado antes, pero tengan paciencia conmigo. Tengo una utilidad que lee la ubicación de Unistall en el registro y luego compara los resultados con una lista de aplicaciones que deben eliminarse. El 80% de las veces esto funciona, pero el truco es que uno de los elementos que se deben eliminar es el antivirus (por lo que se puede reemplazar con una instalación de AVG). Para muchas empresas, esto no funciona. Aquí hay un fragmento de cómo obtengo el software instalado:

const string Win32Loc = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
//const string Win32Loc = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\USerData\S-1-5-18";     
    const string Win64Loc = @"Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";

    List<Application> apps = new List<Application>();
    string location = bool64BitOs ? Win64Loc : Win32Loc;

    using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(location))
    {
        foreach (string skName in rk.GetSubKeyNames())
        {
            using (RegistryKey sk = rk.OpenSubKey(skName))
            {
                apps.Add(new Application { DisplayName = sk.GetValue("DisplayName") == null ? "" : (string)sk.GetValue("DisplayName"), AppKey = skName });
            }
        }
    }

Los resultados se ven así cuando se escriben en un archivo de texto:


Name PowerDVD Key InstallShield_{6811CAA0-BF12-11D4-9EA1-0050BAE317E1}

Nombre ESC Home Page Clave de complemento InstallShield_ {E738A392-F690-4A9D-808E-7BAF80E0B398}

Nombre Intuit SiteBuilder Clave Intuit SiteBuilder

Nombre Paquete redistribuible de Microsoft Visual J # 2.0 Clave Paquete redistribuible de Microsoft Visual J # 2.0

Nombre Norton AntiVirus Key NAV

Nombre Windows Live Essentials Key WinLiveSuite

Nombre Microsoft Visual C ++ 2008 ATL Update kb973924 - x86 9.0.30729.4148 Clave {002D9D5E-29BA-3E6D-9BC4-3D7D6DBC735C


Entonces verá que ALGUNAS instalaciones tienen la clave y otras no. Lo que esto significa es que el 80% que funciona tiene la clave para la llamada MSIEXEC y los demás fallan. Estoy jugando con Installer / UserData / UserXXXXX / Products pero no entiendo cómo atravesar para todos los usuarios. En el volcado que proporcioné, Norton debe irse, pero no veo cómo hacerlo.

Cualquier ayuda sería muy apreciada.

preguntado el 10 de mayo de 11 a las 13:05

Correcto. No puede confiar en que esta información sea precisa. No es necesario que los instaladores incluyan la información en el registro. Las aplicaciones que se comportan particularmente mal (y Norton es el modelo principal de estas) no funcionarán correctamente con su método de desinstalación de "fuerza bruta". La razón por la que no puede encontrar la respuesta a esta pregunta es porque no la hay. -

Buena suerte eliminando Norton (¡programáticamente o de otro modo!). ¡Es el cáncer de las PC prefabricadas compradas en tiendas! -

Si sabe que se le ha preguntado antes, ¿por qué vuelve a preguntar? ¿No podrías usar una de las respuestas anteriores? -

Vale la pena recordar que muchas aplicaciones usan NSIS para instalar también, no MSI. Debería leer la ubicación de su ejecutable de desinstalación, que NSIS suele ser bastante bueno para poner en el registro. -

Algunas cosas: 1) Probablemente debería enumerar las claves de registro Win32Loc y Win64 Loc en sistemas operativos de 64 bits. Las aplicaciones de 32 bits se pueden instalar en sistemas operativos de 64 bits, pero pueden poner su clave de registro de instalación en el registro que no es Wow64. (Depende de si el instalador original tenía un manifiesto y / o la redirección del registro deshabilitada). 2) Para las instalaciones que no son de MSI, la línea de comando para desinstalar es el valor de la clave de registro "UninstallString". ¿Por qué no lo usas para iniciar la desinstalación? -

1 Respuestas

Estoy de acuerdo con el comentario de Selbie sobre el uso de "UninstallString" en su lugar (aunque a veces tampoco lo tendrá, pero para el uso de MSI puede obtener el GUID y usar msiexec /x {GUID}).

Sin embargo, no recomendaría desinstalar los productos Norton A / V mediante este método. Debido a que sus desinstaladores son una porquería y con frecuencia dejan atrás muchas piezas del software que deberían haberse eliminado, Symantec proporciona una herramienta que realmente hace el trabajo de manera segura: el Herramienta de eliminación de Norton. ¡Muy recomendable!

contestado el 17 de mayo de 11 a las 18:05

Eso es perfecto para este terrible problema de Norton. Gracias. para los otros problemas de desinstalación, tendré que resolverlo nuevamente. - bryan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.