Windows 7 está almacenando en caché parte de la información de la clase COM. Los sistemas operativos anteriores no hacían esto. Después de que el sistema operativo busca el valor HKCU\Software\Classes\CLSID\{GUID}\LocalServer32
, almacena en caché el valor y no lo busca de nuevo.Cómo evitar que Windows guarde en caché la información de la clase Com?
Cuando actualizamos nuestro software, colocamos las nuevas actualizaciones en un directorio diferente y luego actualizamos el valor HKCU\Software\Classes\CLSID\{GUID}\LocalServer32
para reflejar la nueva ruta. La próxima vez que se ejecute el software, utilizará los archivos más recientes si se ejecuta en sistemas operativos anteriores de Windows. Sin embargo, en Windows 7, continuará utilizando el archivo anterior, hasta que se reinicie el sistema operativo.
Ejecuté el monitor de procesos y descubrí que en Windows 7 nunca vuelve a leer la clave de registro después de la primera lectura. En sistemas operativos más antiguos, lee esa clave cada vez.
Mi pregunta es: ¿hay alguna manera de obligar a Windows 7 a volver a leer la información de LocalServer32 desde la sección HKCU cada vez que se crea un nuevo objeto COM fuera de proc?
Supongo que su servidor COM (.exe) registra algunas clases (CoRegisterClassObject) durante su inicialización. ¿Estás seguro de que llama a CoRevokeClassObject para todas las clases registradas y se cierra antes de que puedas actualizar? –
Siguiendo a @SimonMourier, ¿el proceso anterior aún está en ejecución o se ha cerrado? Si todavía está funcionando, ese es su problema. – Ben
¿Ha reiniciado la PC después de actualizar el registro COM? –