New ActiveXObject ( 'Word.Application') cria um novo processo winword.exe quando a segurança IE não permite objeto a ser criado

StackOverflow https://stackoverflow.com/questions/2427523

Pergunta

Estamos usando MS Word como um corretor ortográfico para alguns campos em um site da empresa privada, e quando as configurações de segurança do IE estão corretas ele funciona bem. (Zona para o conjunto site para confiáveis ??e confiável zona modificada para permitir o controle para executar sem avisar.)

O script estamos usando cria um objeto de texto e fecha-lo depois. Enquanto o objeto existe um processo winword.exe corridas, mas é destruído quando o objeto do Word é fechado.

Se nosso site não está definido na zona de confiança (zona Internet com nível de segurança padrão) a chamada que cria o objeto Word não como esperado, mas o processo Winword.exe está ainda criado. Eu não tenho qualquer forma de interagir com este processo no script, por isso as estadias processo ao redor até que o usuário faz logoff (usuários não têm nenhuma maneira de destruir manualmente o processo, e que não seria uma boa solução mesmo que eles fizeram. )

A chamada que as tentativas para criar o objeto é ...

try {
      wordApplication = new ActiveXObject('Word.Application');
} catch(error) {
      // irrelevant code removed, described in comments..
      // notify user spell check cannot be used
      // disable spell check option
}

Assim, cada vez que a página é carregada este código pode ser executado novamente, criando ainda um outro processo órfão winword.exe.

wordApplication é, naturalmente, indefinido no bloco catch.

Eu gostaria de ser capaz de detectar as configurações de segurança do navegador de antemão, mas eu fiz alguma pesquisa sobre isso e não acho que é possível.

Gestão aqui é feliz com ele como ele é. Enquanto a segurança IE está configurado corretamente ele funciona, e funciona bem para nossos propósitos. (Podemos, eventualmente, olhar para outras opções para a funcionalidade de verificação ortográfica, mas isso foi rápido, barato e faz tudo o que precisamos fazer.)

erros Este último problema mim e eu gostaria de fazer algo sobre isso, mas eu estou fora de ideias e eu tenho outras coisas que são mais necessitados de minha atenção.

Antes de eu colocá-lo de lado, eu pensei que eu iria pedir sugestões aqui.

Foi útil?

Solução

Eu não encontrei uma resposta a este problema, e estou perturbado com o que o problema implica sobre a segurança do Internet Explorer (eu esqueci de mencionar no meu post anterior a versão que estou usando:. IE 7)

No entanto, eu implementar uma solução alternativa que eu não estou feliz com, mas mesmo assim se sentir mais confortável com que nenhuma verificação de todo ...

O código agora tenta abrir um outro objeto em primeiro lugar, e se isso falhar o código assume que a Palavra não vai abrir qualquer e emite um erro. Deste ponto em diante, não mais chamadas para new ActiveXObject () serão feitas e qualquer tentativa de uma verificação ortográfica irá resultar em um erro.

try { 
    oMSInfo = new ActiveXObject('Msinfo32.MSInfo.1');
} catch (error) {
    //  error handling code not shown...
    return;
}

Este objeto não for iniciado um novo processo quando a chamada para new ActiveXObject () falhar. Ele também não tem um notável efeito sobre os recursos do sistema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top