Compartilhar via


Atualizar um controle ActiveX existente

Controles ActiveX existente (anteriormente conhecido como controles OLE) pode ser usado na Internet sem modificação.No entanto, convém modificar controles para melhorar o desempenho.Ao usar o controle em uma página da Web, existem considerações adicionais.Arquivo .ocx e todos os arquivos de suporte devem estar na computador de destino ou ser baixados pela Internet.Isso torna o dimensionar do código e uma consideração importante de time de baixar.Downloads podem ser empacotados em um arquivo .cab assinado.Você pode marcar seu controle sistema autônomo seguro para script e sistema autônomo seguro para inicialização.

Este artigo aborda os seguintes tópicos:

  • Código de empacotamento para o download

  • Marcando um controle seguro para inicialização e script

  • Problemas de licenciamento

  • Assinatura de código

  • Gerenciando a paleta

  • Níveis de segurança do Internet Explorer navegador e comportamento do controle

Você também pode adicionar otimizações, sistema autônomo descrito em Controles ActiveX: Otimização de.Identificadores de origem podem ser usados para fazer o baixar de propriedades e BLOBs grandes assincronamente, conforme descrito em Controles ActiveX na Internet.

Código de empacotamento para o download

Para obter mais informações sobre este assunto, consulte o artigo da Base de dados de Conhecimento da Microsoft "Packaging MFC controles para uso pela Internet" (Q167158).Você encontrará artigos da Base de dados de Conhecimento no CD-ROM Biblioteca MSDN ou em http://suporte.Microsoft.com/suporte.

Marca CODEBASE

Os controles ActiveX são incorporados em páginas da Web usando o <OBJECT> marca. The CODEBASE parâmetro das <OBJECT> marca Especifica o local onde fazer o baixar do controle. CODEBASE pode apontar com um número de diferentes tipos de arquivo com êxito.

Usando a marca CODEBASE com um arquivo OCX

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

Essa solução baixa apenas do controle .ocx arquivo e requer quaisquer DLLs de suporte já estar instalado no computador cliente.Isso funcionará para controles MFC ActiveX e Internet Explorer criados com Visual C++, porque o Internet Explorer é fornecido com as DLLs de suporte para controles do Visual C++.Se outro navegador da Internet que é compatível com o controle ActiveX é usado para exibir esse controle, esta solução não funcionará.

Usando a marca CODEBASE com um arquivo INF

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

Um arquivo .inf controlará a instalação de um .ocx e seus arquivos de suporte.Esse método não é recomendado porque não é possível assinar um arquivo .inf (consulte Assinatura de código ponteiros sobre assinatura de código).

Usando a marca CODEBASE com um arquivo CAB

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

Arquivos de gabinete são a maneira recomendada aos controles de ActiveX de pacote usar MFC.Empacotando um controle MFC ActiveX em um arquivo de gabinete permite que um arquivo .inf ser incluído instalação de controle do controle ActiveX e quaisquer DLLs dependentes (sistema autônomo DLLs MFC).Usar um arquivo CAB automaticamente compacta o código para baixar mais rápido.Se você estiver usando um arquivo .cab para baixar de componente, é mais rápido assinar o arquivo .cab inteira de cada componente individual.

Criar arquivos CAB

O Kit de desenvolvimento do gabinete pode ser obtido no site da MSDN em https://msdn.Microsoft.com/workshop/Management/CAB/cabdl.ASP (Links da web pode ser alterada sem aviso prévio).Esse kit, você encontrará as ferramentas necessárias para construir arquivos de gabinete.

O arquivo de gabinete apontada por CODEBASE deve conter o arquivo .ocx para seu controle ActiveX e um arquivo .inf para controlar a sua instalação. Você cria o arquivo de gabinete, especificando o nome do arquivo de controle e um arquivo .inf.Não inclua DLLs dependentes talvez já exista no sistema no arquivo de gabinete.Por exemplo, as DLLs de MFC estão em um arquivo de gabinete separado e referenciadas pelo arquivo .inf controlar.

Para obter detalhes sobre como criar um arquivo CAB, consulte Criando um arquivo CAB.

O arquivo INF

O exemplo a seguir, spindial.inf, listas de arquivos de suporte e as informações de versão necessários para Spindial MFC controle.Observe que o local para as DLLs do MFC é um site da Microsoft.O mfc42.cab é fornecido e assinado pela 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

O <objeto>marca

O exemplo a seguir ilustra usando o <OBJECT> marca de controle de exemplo Spindial MFC do pacote.

<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>

Nesse caso, spindial.cab conterá dois arquivos, spindial.ocx e spindial.inf.O comando a seguir criará o arquivo de gabinete:

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

The –s 6144 parameter reserves space in the cabinet for code signing.

A etiqueta de versão

Observe aqui que o #Version informações especificadas com um arquivo CAB se aplicam ao controle especificado pela CLASSID parâmetro das <OBJECT> marca.

Dependendo da versão especificada, você pode forçar o baixar do seu controle.Para obter as especificações completas do OBJECT marca incluindo o CODEBASE parâmetro, consulte W3C referência.

Marcando um controle seguro para inicialização e script

sistema autônomo controles ActiveX usados em páginas da Web deverá ser marcados sistema autônomo seguro para script e para a inicialização se na verdade são seguros.Um controle seguro não realizar E/S de disco ou acessar a memória ou registros de um computador diretamente.

Controles podem ser marcadas sistema autônomo seguro para script e seguro para inicialização no registro.Modificar DllRegisterServer Para adicionar entradas semelhantes à seguinte para marcar o controle sistema autônomo seguro para script e persistência no registro. Um método alternativo é implementar IObjectSafety.

Você irá definir GUIDs (Globally Unique Identifiers) para o controle para marcá-lo seguro para script e persistência.Controles com segurança script conterá uma entrada de registro similar à seguinte:

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

Controles que podem ser inicializados com segurança dos dados persistentes são marcados como seguros para persistência com uma entrada de registro similar à:

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

Adicionar entradas semelhantes à seguinte (substituindo seu controle ID de classe em vez de {06889605-B8D0-101A-91F1-00608CEAD5B3}) para associar as chaves a seguinte ID de classe:

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 licenciamento

Se você quiser usar um controle de licenciados em uma página da Web, você deve verificar se o contrato de licença permite seu uso na Internet e criar um arquivo(LPK) do pacote de licença para ele.

Um controle ActiveX licenciado não serão carregados corretamente em uma página HTML se o computador que está executando o Internet Explorer não está licenciado para usar o controle.Por exemplo, se um controle de licenciado foi criado usando o Visual C++, a página HTML usando o controle será carregado corretamente no computador onde o controle foi criado, mas não será carregado em um computador diferente, a menos que as informações de licenciamento seja incluídas.

Para usar um controle ActiveX licenciado no Internet Explorer, você deve fazer o contrato de licença do fornecedor para verificar a licença para o controle permite que:

  • Redistribuição

  • Uso do controle da Internet

  • Uso do parâmetro CODEBASE

Para usar um controle de licenciados em uma página HTML em uma computador nonlicensed, é necessário gerar um arquivo de pacote de licença (LPK).O arquivo LPK contém licenças de time de execução para controles licenciados na página HTML.Este arquivo é gerado por meio de LPK_TOOL.EXE que vem com o SDK do ActiveX.Para obter mais informações, consulte o site do MSND em https://msdn.Microsoft.com.

Para criar um arquivo LPK

  1. Executar LPK_TOOL.EXE em um computador que está licenciado para usar o controle.

  2. In the License Package Authoring Tool dialog box, in the Available Controls list box, select each licensed ActiveX control that will be used on the HTML page and click Add.

  3. clicar Salvar & sair e digite um nome para o arquivo LPK.Isso irá criar o arquivo LPK e fechar o aplicativo.

Incorporar um controle de licenciados em uma página HTML

  1. Edite sua página HTML.Na página HTML, inserir uma marca <OBJECT>para o objeto Gerenciador de licenças antes de quaisquer outras Rótulos <OBJECT>.O License Manager é um controle ActiveX instalado com o Internet Explorer.Sua ID de classe é mostrada abaixo.Defina a propriedade LPKPath do objeto Gerenciador de licenças o caminho e o nome do arquivo LPK.Você pode ter somente um arquivo LPK por página HTML.

    <OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
    </OBJECT>
    
  2. Insira a marca <objeto>licenciado de controle de após a marca do License Manager.

    Por exemplo, uma página HTML que exibe a máscara de Microsoft controle de edição é mostrado abaixo.A primeira classe que ID é para o controle do Gerenciador de licenças, a segunda classe que ID é para o controle Masked edição.Alterar as Rótulos para apontar para o caminho relativo do arquivo .lpk criado anteriormente e adicionar uma marca de objeto, incluindo a ID de classe para o seu controle.

  3. Insira o atributo <embed>arquivo LPK de se usar o NCompass ActiveX plug-in.

    Se seu controle pode ser exibido em outros ativo habilitado navegadores — por exemplo, Netscape usando o NCompass ActiveX plug-in — você deve adicionar a sintaxe <embed>sistema autônomo mostrado abaixo.

    <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 obter mais informações sobre o controle de licenciamento, consulte Controles ActiveX: Licenciamento de um controle ActiveX.

Assinatura de código

Assinatura de código é projetada para identificar fonte do código e garantir que o código não foi alterado desde que ele foi assinado.Dependendo das configurações de segurança do navegador, os usuários podem ser avisados antes que o código é baixado.Os usuários podem optar por confiar alguns proprietários de certificado ou empresas, em que caso código assinado pelas pessoas confiáveis será baixado sem aviso.Código é assinado digitalmente para evitar a violação.

Certifique-se de que seu código final é assinado para que o controle pode ser baixado automaticamente sem exibir mensagens de aviso de relação de confiança.Para obter detalhes sobre como assinar código, consulte a documentação no Authenticode ™ no SDK do ActiveX e ver Assinatura de um arquivo CAB.

Dependendo das relações de confiança e navegador segurança nível configurações, um certificado pode ser exibido para identificar a pessoa ou empresa de assinatura.Se o nível de segurança for nenhum, ou se o proprietário do certificado assinado do controle é confiável, um certificado não aparecerá.See Níveis de segurança do Internet Explorer Browser e comportamento do controle para obter detalhes sobre como a configuração de segurança do navegador irá determinar se o controle é baixado e um certificado exibido.

Código de garantias de assinatura digital não foi alterado desde que foi assinado.Um hash do código é executado e incorporado no certificado.Esse hash posterior é comparado com um hash de código executado após o código é baixado, mas antes que ele é executado.Empresas sistema autônomo a VeriSign podem fornecer chaves pública e particular necessários para assinar o código.O SDK do ActiveX é fornecido com MakeCert, um utilitário para a criação de certificados de teste, e dois arquivos registro, wvtston.reg e wvtstoff.reg, para especificar se deseja ou não o navegador deve reconhecer teste certificados sistema autônomo válido.

Gerenciando a paleta

Recipientes determinam a paleta e disponibilizá-lo sistema autônomo uma propriedade de ambiente, DISPID_AMBIENT_PALETTE.Um contêiner (por exemplo, o Microsoft Internet Explorer) escolhe uma paleta que é usada por todos os controles ActiveX em uma página para determinar sua própria paleta.Isso impede a exibição cintilação e apresenta uma aparência consistente.

Um controle pode substituir OnAmbientPropertyChange para lidar com notificações de alterações da paleta.

Um controle pode substituir OnGetColorSet para retornar um conjunto para desenhar a paleta de cores. Contêineres de usar o valor retornado para determinar se um controle com reconhecimento de paleta.

Em 96 OCX diretrizes, um controle deve sempre percebem sua paleta em segundo plano.

Recipientes mais antigos que não usam a propriedade de ambiente paleta enviará WM_QUERYNEWPALETTE e WM_PALETTECHANGED mensagens. Um controle pode substituir OnQueryNewPalette e OnPaletteChanged para lidar com essas mensagens.

Níveis de segurança do Internet Explorer navegador e comportamento do controle

Um navegador tem opções para o nível de segurança configurável pelo usuário.Como páginas da Web podem conter conteúdo ativo pode danificar o computador do usuário, navegadores permitem que o usuário selecionar opções de nível de segurança.Dependendo de como um navegador implementa níveis de segurança, um controle não pode ser baixado em todos os ou exibirá uma mensagem de aviso para permitir que o usuário escolher em time de execução se deve ou não fazer o baixar do controle ou de um certificado.O comportamento de controles ActiveX em níveis de segurança alta, média e baixa no Internet Explorer está listado abaixo.

Modo de segurança alta

  • Controles não assinados não serão baixados.

  • Controles assinados exibirá um certificado se não confiável (um usuário pode escolher uma opção para confiar sempre o código deste proprietário do certificado de agora em diante).

  • Somente sistema autônomo controles marcados sistema autônomo seguros irão ter dados persistentes e/ou ser programável por scripts.

Modo de segurança meio

  • Controles não assinados exibirá um aviso antes de fazer o download.

  • Controles assinados exibirá um certificado se não confiável.

  • Controles não marcados sistema autônomo seguros exibirá um aviso.

Modo de segurança baixo

  • Download de controles sem aviso.

  • Scripts e persistência ocorrem sem aviso.

Consulte também

Conceitos

Tarefas de programação de Internet do MFC

Noções básicas de programação de Internet do MFC

Referência

Os controles ActiveX MFC: Um controle ActiveX de licenciamento