Compartir a través de


Actualizar un control ActiveX existente

Controles ActiveX existentes (antes controles OLE) se pueden utilizar en internet sin modificaciones.Sin embargo, puede modificar los controles para mejorar el rendimiento.Al utilizar el control en una página Web, existen consideraciones adicionales.El archivo .ocx y todos los archivos auxiliares deben estar en el equipo o descargar a través de Internet.Esto crea el tamaño y el tiempo de descarga de código una consideración importante.Descargas se pueden empaquetar en un archivo .cab firmado.Puede marcar el control como seguro para el script, y como seguro para inicializar.

En este artículo se abordan los siguientes temas:

  • Código del paquete para descargar

  • Marcar un Control Seguro para el script y el inicializar

  • Problemas de autorización

  • Firmar el código

  • Administrar el Palette

  • Niveles de Protección del explorador Internet Explorer y comportamiento de Control

También puede agregar optimizaciones, como se describe en Controles ActiveX: Optimización.Monikers se pueden utilizar las propiedades de descarga y objetos binarios grandes de forma asincrónica, como se describe en Controles ActiveX en internet.

Código del paquete para descargar

Para obtener más información sobre este tema, vea el artículo de Knowledge Base “empaquetar Controles MFC para el uso Compilaciones internet” (Q167158).Encontrará artículos de Knowledge Base en el CD-ROM de MSDN Library o en la dirección https://support.microsoft.com/support.

941zhks9.collapse_all(es-es,VS.110).gifLa etiqueta de CODEBASE

Los controles ActiveX se insertan en páginas Web mediante la etiqueta de <OBJECT>.El parámetro de CODEBASE de la etiqueta de <OBJECT> especifica la ubicación de la que descargar el control.CODEBASE puede notificar en varios tipos de archivo correctamente.

941zhks9.collapse_all(es-es,VS.110).gifMediante la etiqueta de CODEBASE con un archivo de OCX

CODEBASE="http://example.microsoft.com/mycontrol.ocx#version=4,70,0,1086"

Esta solución sólo descargará el archivo .ocx del control, y requiere las DLL que admite que ya instalada en el equipo cliente.Esto funcionará para Internet Explorer y los controles ActiveX de MFC compilados con Visual C++, porque Internet Explorer envía con archivos DLL que admiten para controles de Visual C++.Si utilizan a otro explorador de Internet que es ActiveX CONTROL-capaz para ver este control, esta solución no funcionará.

941zhks9.collapse_all(es-es,VS.110).gifMediante la etiqueta de CODEBASE con un archivo de los INF

CODEBASE="http://example.microsoft.com/trustme.inf"

Un archivo de .inf controlará la instalación de un archivo .ocx y sus archivos auxiliares.Este método no se recomienda porque no es posible firmar un archivo de .inf (vea Firmar el código para punteros en código de firma).

941zhks9.collapse_all(es-es,VS.110).gifMediante la etiqueta de CODEBASE con un archivo CAB

CODEBASE="http://example.microsoft.com/acontrol.cab#version=1,2,0,0"

Los archivador. son la forma recomendada a los controles ActiveX que utilizan MFC.Empaquetar un control ActiveX de MFC en un archivador. permite que un archivo de .inf se incluye para controlar la instalación de control ActiveX y cualquier archivo DLL dependiente (como los archivos DLL de MFC).Mediante un archivo CAB automáticamente comprime el código para una descarga más rápida.Si utiliza un archivo .cab para la descarga de componentes, es más rápido firmar el archivo .cab completo que cada componente individual.

941zhks9.collapse_all(es-es,VS.110).gifCrear archivos CAB

Puede descargar el kit de desarrollo de archivador. del artículo 310618: Kit de desarrollo de software de archivador. de Microsoft de Knowledge Base.En este kit encontrará las herramientas necesarias para construir los archivador.

El archivador. indicada por CODEBASE debe contener el archivo .ocx para el control ActiveX y un archivo de .inf para controlar la instalación.Crea el archivador. especificando el nombre del archivo de control y un archivo de .inf.No incluya archivos DLL dependientes que pueden existir en el sistema en este archivador.Por ejemplo, los archivos DLL de MFC se empaquetan en un archivador. independiente y se les hace referencia por el archivo de .inf que controla.

Para obtener información sobre cómo crear un archivo CAB, vea Crear un archivo CAB.

941zhks9.collapse_all(es-es,VS.110).gifEl archivo de los INF

El ejemplo siguiente, spindial.inf, listas los archivos auxiliares y la información de versión necesarios para el control MFC Spindial.Observe la ubicación de los archivos DLL de MFC es un sitio web de Microsoft.El mfc42.cab proporcionado y firmado por Microsoft.

Contents of spindial.inf:
[mfc42installer] 
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab 
[Olepro32.dll] - FileVersion=5,0,4261,0
[Mfc42.dll] - FileVersion=6,0,8168,0
[Msvcrt.dll] - FileVersion=6,0,8168,0

941zhks9.collapse_all(es-es,VS.110).gifLa etiqueta de <OBJECT>

El ejemplo siguiente se muestra cómo utilizar la etiqueta de <OBJECT> empaquetar el control de ejemplo de MFC Spindial.

<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
  CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
  CODEBASE="http://example.microsoft.com/spindial.cab#Version=1,0,0,001">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
    <PARAM NAME="NeedlePosition" VALUE="2">
</OBJECT>

En este caso, spindial.cab contendrá dos archivos, spindial.ocx y spindial.inf.El comando siguiente compilará el archivador.:

C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf 

El parámetro de –s 6144 reserva espacio en el archivo. CAB para la firma de código.

941zhks9.collapse_all(es-es,VS.110).gifLa etiqueta de versión

Observe aquí que la información de #Version especificada con un archivo CAB aplica al control especificado por el parámetro de CLASSID de la etiqueta de <OBJECT>.

Dependiendo de la versión especificada, puede forzar la descarga del control.Para las especificaciones completadas de la etiqueta de OBJECT como el parámetro de CODEBASE, vea referencia de W3C.

Marcar un Control Seguro para el script y el inicializar

Los controles ActiveX utilizados en páginas Web deben marcarse como safe para el script y seguro para inicializar si son de hecho seguros.Un control seguro no realizará el disco E/S ni tendrá acceso a la memoria o los registros de un equipo directamente.

Los Controles se pueden marcar como safe para el script y seguro para inicializar a través del registro.Modifique DllRegisterServer para agregar las entradas similares a la siguiente para marcar el control como seguro para el script y la persistencia en el registro.Un método alternativo es implementar IObjectSafety.

Definirá GUID (identificadores únicos globales) para el control para marcarlo seguro para el script y para persistencia.Los Controles que pueden ser segura con guiones contendrán una entrada de Registro similar al siguiente:

HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}

Los Controles que se pueden inicializar con seguridad de datos persistentes son seguros marcada para persistencia con una entrada de Registro similar a:

HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

Agregue las entradas similares al siguiente (sustituyendo el identificador de la clase de control en lugar de {06889605-B8D0-101A-91F1-00608CEAD5B3}) para asociar claves con el siguiente identificador de la clase:

HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4} 
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4} 

Problemas de autorización

Si desea utilizar un control con licencia en una página Web, debe comprobar que el contrato de licencia permite su uso en internet y crea un archivo de paquete de licencia (LPK) para él.

Un control ActiveX con licencia no cargará correctamente en una página HTML si el equipo que ejecuta Internet Explorer no está autorizado para utilizar el control.Por ejemplo, si un control con licencia se compiló con Visual C++, la página HTML mediante el control cargará correctamente en el equipo en que el control se compiló, pero no cargará en otro equipo a menos que la información de autorización se incluya.

Para utilizar un control ActiveX con licencia en Internet Explorer, debe comprobar el contrato de licencia del proveedor para comprobar que la licencia para el control permite:

  • Redistribución

  • Uso del control en internet

  • Uso del parámetro de código base

Para utilizar un control con licencia en una página HTML en un equipo nonlicensed, debe generar un archivo de paquete de licencia (LPK).El archivo de LPK contiene las licencias en tiempo de ejecución para los controles con licencia en la página HTML.Este archivo se genera mediante LPK_TOOL.EXE que se incluye en ActiveX SDK.Para obtener más información, vea el sitio web de MSDN en https://msdn.microsoft.com.

Para crear un archivo LPK

  1. Ejecute LPK_TOOL.EXE en un equipo que está autorizado para utilizar el control.

  2. En el cuadro de diálogo License Package Authoring Tool, en el cuadro de lista DisponibleControles, seleccione cada control ActiveX con licencia que se utilizará en la página HTML y haga clic Add.

  3. Haga clic en Save & Exit y escriba un nombre para el archivo de LPK.Esto creará el archivo de LPK y se cierra la aplicación.

Para insertar un control con licencia en una página HTML

  1. Edite la página HTML.En la página HTML, inserte una etiqueta de <OBJECT> para el objeto de administrador de licencias antes de cualquier otra etiqueta de <OBJECT>.El administrador de licencias es un control ActiveX que se instala con Internet Explorer.El identificador de la clase se muestra a continuación.Establezca la propiedad de LPKPath del objeto de administrador de licencias en la ruta de acceso y nombre de archivo de LPK.Puede tener sólo un archivo de LPK por la página HTML.

    <OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
    </OBJECT>
    
  2. Inserte la etiqueta de <OBJECT> para el control con licencia después de la etiqueta del administrador de licencias.

    Por ejemplo, una página HTML que muestra el control de edición Microsoft Masked se muestra a continuación.Identificador de la primera clase es para el control de administrador de licencias, la segunda clase que el identificador es para el control de edición Masked.Cambie las etiquetas para señalar a la ruta de acceso relativa del archivo de .lpk que creó anteriormente, y agregue una etiqueta de objeto incluido el identificador de clase para el control.

  3. Inserte el atributo de <EMBED> para el archivo de LPK, si usa el complemento de NCompass ActiveX.

    Si el control se puede ver en otros exploradores habilitado activo (por ejemplo, Netscape mediante el complemento de NCompass ActiveX — debe agregar la sintaxis de <EMBED> como se muestra a continuación.

    <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="maskedit.lpk">
    
        <EMBED SRC = "maskedit.LPK">
    
    </OBJECT>
    <OBJECT CLASSID="clsid:C932BA85-4374-101B-A56C-00AA003668DC" WIDTH=100 HEIGHT=25>
    </OBJECT>
    

Para obtener más información sobre el control que autoriza, vea Controles ActiveX: Autorización de un control ActiveX.

Firmar el código

La firma de código está diseñado para identificar el origen del código, y para garantizar que el código no ha cambiado desde que se firmó.Dependiendo de la configuración de seguridad del explorador, los usuarios se advertidos antes de descargar el código.Los usuarios pueden elegir para confiar en ciertos propietarios o compañías de certificado, en cuyo caso el código firmado por los datos es descargado sin advertencia.El código se firma digitalmente para evitar modificaciones.

Asegúrese de que el código final se firmen para poder automáticamente descargar el control sin mostrar mensajes de advertencia de confianza.Para obtener información sobre cómo firmar código, compruebe la documentación en Authenticode en ActiveX SDK y vea Firmar un archivo CAB.

Dependiendo de la configuración del nivel de confianza y la seguridad del explorador, un certificado se puede mostrar para identificar la persona o la compañía de firma.Si el nivel de seguridad no es none, o si el propietario firmado del certificado del control es de confianza, un certificado no se mostrará.Vea Niveles de Protección del explorador Internet Explorer y comportamiento de Control para obtener detalles sobre cómo la configuración de seguridad del explorador determinará si el control está descargado y un certificado se muestra.

El código de las garantías de la firma digital no ha cambiado desde que se ha firmado.Un hash del código se extrae y se inserta en el certificado.Este hash es más adelante en comparación con un valor hash del código tomado después de descargar el código pero antes de que se ejecuta.Las compañías como Verisign pueden proporcionar private y las claves públicas necesarios para firmar el código.ActiveX SDK envía con MakeCert, una utilidad para crear los certificados de prueba.

Administrar el Palette

Los contenedores determinan la paleta y la disponibles como propiedad de ambiente, DISPID_AMBIENT_PALETTE.Un contenedor (por ejemplo, Internet Explorer) elija una paleta que sea utilizada por todos los controles ActiveX en una página para determinar su propia paleta.Esto evita que se muestre el parpadeo y muestra un aspecto coherente.

Un control puede reemplazar OnAmbientPropertyChange para controlar la notificación de cambios en la paleta.

Un control puede reemplazar OnGetColorSet para devolver un conjunto de colores para dibujar la paleta.Los contenedores utilizan el valor devuelto para determinar si un control se paleta- monitores.

En OCX 96 instrucciones, un control debe realizar siempre la paleta en segundo plano.

Contenedores más antiguos que no utilizan la propiedad de ambiente de la paleta se incluirán WM_QUERYNEWPALETTE y los mensajes de WM_PALETTECHANGED.Un control puede reemplazar OnQueryNewPalette y OnPaletteChanged para administrar estos mensajes.

Niveles de Protección del explorador Internet Explorer y comportamiento de Control

Un explorador tiene opciones para el nivel de seguridad, configurables por el usuario.Como las páginas Web pueden incluir contenido activo que podría potencialmente dañar el equipo de un usuario, exploradores permiten al usuario a seleccionar las opciones del nivel de seguridad.Según la forma un explorador implementa niveles de seguridad, el control no se puede descargar en absoluto, o mostrará un certificado o un mensaje de advertencia para permitir que el usuario elija en tiempo de ejecución si descargar el control.El comportamiento de los controles ActiveX en alto, medio, y niveles de seguridad baja en Internet Explorer se muestra a continuación.

941zhks9.collapse_all(es-es,VS.110).gifModo de seguridad alta

  • Los controles sin signo no se descargarán.

  • Los controles firmados mostrarán un certificado si es que no es de confianza (un usuario puede elegir una opción de confirmar siempre código de este propietario del certificado de ahora en adelante).

  • Sólo los controles marcados como seguro tendrán datos persistentes o eran que admite scripts.

941zhks9.collapse_all(es-es,VS.110).gifEntre el modo de seguridad

  • Los controles sin signo mostrarán una advertencia antes de descargar.

  • Los controles firmados mostrarán un certificado si es que no es de confianza.

  • Los Controles no marcadas como seguro mostrará una advertencia.

941zhks9.collapse_all(es-es,VS.110).gifModo de seguridad baja

  • Los Controles se descargan sin advertencia.

  • El script y la persistencia aparecen sin advertencia.

Vea también

Referencia

Controles ActiveX de MFC: autorización de un control ActiveX

Conceptos

Tareas de programación internet de MFC

Internet de MFC que programa fundamentos