Pregunta

¿Es posible usar un ocx (Control ActiveX) en una forma de victoria (probablemente agregándolo programáticamente) sin tener primero el ocx registrado con regsrv32?

Lo que intento lograr es habilitar la instalación de xcopy. He tenido el " AxInterop. .dll " e "Interop. .dll" archivo generado desde mi máquina de desarrollo.

He visto la posibilidad de llamar a un dll COM sin registrarlo primero ( ProSysLib , según el autor, pero aún no lo he probado), ya que ocx también está basado en COM, por lo que supongo que debe haber alguna forma de hacerlo también.

¿Fue útil?

Solución

Sí, esto se puede hacer. Debe asumir que su aplicación solo se implementará en Windows XP (o Windows Server 2003) o posterior, y luego puede usar lo que se denomina "COM sin registro" para que esto suceda.

Esencialmente, lo que debe hacer es crear un archivo de manifiesto para la DLL de control ActiveX para que el cargador de Windows & amp; COM DLL sabe a qué se debe su registro sin tener que poner eso en el registro.

Un tutorial de qué hacer está en este artículo en MSDN: Activación sin registro de componentes COM: un recorrido

" Paso 6 " y "Paso 7" en ese artículo contiene todo que necesitará.

Acabo de probar esto en uno de mis propios programas de C # que utiliza un control de cuadrícula ActiveX de Microsoft (el antiguo " MS Flex Grid ") y funciona bien. Asegúrese de crear un archivo de manifiesto tanto para su aplicación como para la DLL de COM, y sustituya los GUID apropiados en los lugares correctos. Es posible que necesite usar OLEVIEW para desenterrar los ID correctos para usar desde la DLL de ActiveX si no los tiene a mano.

Otros consejos

Tenga en cuenta que, aparentemente, el uso de COM sin registro para los componentes COM creados en .NET puede causar bloqueos aleatorios en Windows XP

Enlaces: Pregunta de Stackoverflow donde Aprendí esto, en la base de conocimientos de Microsoft artículo mencionado en esa pregunta. Hay un hotfix pero no puedes redistribuirlo.

Es incluso mucho más simple en Visual Studio: solo ve a Referencias, encuentra las posiciones creadas por tu ocx (debe haber 2, AxSomething y Something) y configúrelas para Aislar: verdadero en sus propiedades. No hay manifiestos, no hay código. Ahora debe distribuir su archivo exe con el archivo dll que contiene ocx. En su máquina de desarrollo, el ocx puede ser registrado.

Después de 10 horas de buscar cómo ejecutar la aplicación VB6 con OCX en Win7 sin registrarla y sin derechos de administrador, encontré pocas soluciones de clic aquí: http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c

Necesito verificar el Incrustar manifiesto para que funcione. Funciona como encanto!

Publico solución aquí, porque también encontré esta pregunta aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top