El nuevo ActiveXObject('Word.Application') crea un nuevo proceso winword.exe cuando la seguridad de IE no permite que se creen objetos

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

Pregunta

Estamos utilizando MS Word como corrector ortográfico para algunos campos en el sitio web de una empresa privada y, cuando la configuración de seguridad de IE es correcta, funciona bien.(Zona del sitio configurada como Confiable y zona confiable modificada para permitir que el control se ejecute sin solicitarlo).

El script que estamos usando crea un objeto de palabra y luego lo cierra.Mientras el objeto existe, se ejecuta un proceso winword.exe, pero se destruye cuando se cierra el objeto de Word.

Si nuestro sitio no está configurado en la zona de confianza (zona de Internet con nivel de seguridad predeterminado), la llamada que crea el objeto de Word falla como se esperaba, pero el proceso winword.exe aún se crea.No tengo ninguna forma de interactuar con este proceso en el script, por lo que el proceso permanece activo hasta que el usuario cierra la sesión (los usuarios no tienen forma de destruir manualmente el proceso y no sería una buena solución incluso si lo hicieran). )

La llamada que intenta crear el objeto es...

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
}

Por lo tanto, cada vez que se carga la página, este código se puede ejecutar nuevamente, creando otro proceso huérfano winword.exe.

wordApplication Por supuesto, no está definido en el bloque catch.

Me gustaría poder detectar la configuración de seguridad del navegador de antemano, pero he buscado un poco sobre esto y no creo que sea posible.

La gerencia aquí está contenta con esto tal como está.Siempre que la seguridad de IE esté configurada correctamente, funcionará y funciona bien para nuestros propósitos.(Es posible que eventualmente busquemos otras opciones para la función de revisión ortográfica, pero esta fue rápida, económica y hace todo lo que necesitamos).

Este último problema me molesta y me gustaría hacer algo al respecto, pero ya no tengo ideas y tengo otras cosas que necesitan más atención.

Antes de dejarlo a un lado, pensé en pedir sugerencias aquí.

¿Fue útil?

Solución

No he encontrado una respuesta a este problema y me preocupa lo que implica el problema sobre la seguridad de Internet Explorer (olvidé mencionar en mi publicación anterior la versión que estoy usando:Es decir, 7.)

Sin embargo, implementé una solución alternativa con la que no estoy satisfecho, pero con la que me siento más cómodo que sin ninguna verificación...

El código ahora intenta abrir otro objeto primero y, si eso falla, asume que Word tampoco se abrirá y genera un error.A partir de este momento, no se realizarán más llamadas al nuevo ActiveXObject() y cualquier intento de revisión ortográfica resultará en un error.

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

Este objeto no inicia un nuevo proceso cuando falla la llamada al nuevo ActiveXObject().Tampoco tiene un efecto notable en los recursos del sistema.

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