2010-11-22 23 views
5

Estoy agregando alguna funcionalidad a una herramienta de administración antigua escrita en VB6. La herramienta usa un objeto C++ activeX. No he trabajado en la herramienta desde que actualicé a Windows 7 y ahora el objeto X activo no se carga con el error 429 "El componente ActiveX no puede crear objetos". No conozco VB6, pero he registrado la biblioteca dll y type de activex y puedo eliminar y agregar el objeto del proyecto a través de la ventana proyecto-> referencias (el programa no compila cuando la referencia se elimina como se esperaba). La ide VB6 se está ejecutando en modo de administrador y obtengo el mismo error si ejecuto el archivo exe directamente como administrador.Ejecutando activex dll desde VB6 bajo windows 7

¿Alguien más ha experimentado un problema similar y ha encontrado una forma de solucionarlo?

Gracias, Patrick

PD: También he intentado poner el archivo DLL en cuestión en el directorio de trabajo del exe

EDIT: No he tenido suerte tratando de resolver esto y terminó remotamente en un servidor de Windows 2003 para probar los cambios.

+0

Pruebe esto [Cómo solucionar problemas de error en tiempo de ejecución '429' en aplicaciones DCOM] (http://support.microsoft.com/kb/177394) – lsalamon

+0

Todo esto está en la misma máquina, no se distribuye ... – Patrick

Respuesta

-1

¿Tiene habilitado el UAC en esa máquina? ¿Has probado disabling it? He visto algunos casos en los que los controles ActiveX se registraron pero no permitieron que se ejecutaran las aplicaciones que los usaban.

+0

No puedo hacer eso ya que está en contra de la política de la compañía ... – Patrick

0

COM va a utilizar el registro para asignar desde el nombre de clase al archivo DLL físico que se debe cargar.

Compruebe las claves de registro pertenecientes a su objeto COM ... primero en HKEY_CLASSES_ROOT, luego el nombre de la clase, que le proporciona el CLSID, la sección HKEY_CLASSES_ROOT/CLSID para el GUID del objeto y luego vea dónde está el la biblioteca vive

0

A 429 podría significar todo tipo de cosas diferentes. Muchas veces, significa que falta una dependencia, y la forma más fácil de descubrir qué dependencia falta es usar procmon para ver a qué archivos/configuraciones de registro está intentando acceder la aplicación y, con suerte, ver dónde se obtiene ACCESS_DENIED o FILE_NOT_FOUND o Que tienes.

2

Puede intentar usar el regMon y FileMon de Mark Russinovich para ver exactamente qué archivos o regkeys se están solicitando durante la carga de ese dll. Eso a menudo puede decirte si tienes una dependencia faltante.

También el DEPENDS.EXE que viene con VS6 a veces es bueno para eso (aunque no necesariamente obtiene TODAS las dependencias de un dll o exe).

+0

¡esa referencia de RegMon/FileMon me salvó el día! Esas dos aplicaciones ahora están incorporadas en ProcessMonitor: [http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx][1] Pude ver lo que estaba causando los errores de 'Biblioteca de objetos no encontrados' por buscando en la configuración del registro que ProcessMonitor me reveló. Pude guardar un archivo de registro en .csv, abrirlo en el Bloc de notas y buscar. ¡Gracias por el consejo! –

0

El problema también podría ser con su navegador. Hace un par de semanas actualicé mi IE, desde entonces tuve que hacer cambios abriendo IE, haciendo clic en herramientas, haciendo clic en personalizado, despliego a los controles activeX y habilito, y/o presiono el símbolo del sistema. Lo mismo fue necesario para las secuencias de comandos y para mí para usar XMLHttprequest. Ahora todo vuelve a funcionar, sin embargo, la alerta de advertencia ActiveX a veces demora más de 2 minutos en aparecer, luego, cuando se hace clic, todo funciona bien.

Cuestiones relacionadas