New ActiveXObject ( 'Word.Application') crea nuovo processo Winword.exe quando la sicurezza di IE non consente oggetto da creare

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

Domanda

Stiamo usando MS Word come un correttore ortografico per un paio di campi in un sito privato web aziendale, e quando le impostazioni di sicurezza di IE siano corrette funziona bene. (Zona per il sito impostato su attendibili, e la zona modificato per consentire il controllo di correre senza chiedere fiducia.)

Lo script che stiamo usando crea un oggetto parola e chiude dopo. Mentre l'oggetto esiste, un processo winword.exe viene eseguito, ma viene distrutto quando l'oggetto di Word è chiuso.

Se il nostro sito non si trova nel zona di fiducia (area Internet con livello di protezione predefinito), la chiamata che crea l'oggetto Word non come previsto, ma il processo Winword.exe è ancora creato. Non ho alcun modo di interagire con questo processo nello script, in modo che il processo rimane intorno fino a quando l'utente si disconnette (gli utenti non hanno modo di distruggere manualmente il processo, e non sarebbe una buona soluzione anche se hanno fatto. )

La chiamata che tenta di creare l'oggetto è ...

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
}

Quindi, ogni volta che la pagina viene caricata questo codice può essere eseguito di nuovo, creando ancora un altro orfano winword.exe processo.

wordApplication è, naturalmente, non definito nel blocco catch.

Mi piacerebbe essere in grado di rilevare le impostazioni di sicurezza del browser in anticipo, ma ho fatto qualche ricerca su questo e non credo che sia possibile.

Gestione qui è soddisfatto così com'è. Fino a quando la sicurezza di IE è impostato correttamente funziona, e funziona bene per i nostri scopi. (Potremmo eventualmente cercare altre possibilità per la funzionalità di controllo ortografico, ma questo è stato rapido, poco costoso, e fa di tutto abbiamo bisogno di fare.)

Questa ultimi bug problema mi e mi piacerebbe fare qualcosa al riguardo, ma sono a corto di idee e ho altre cose che sono più bisogno della mia attenzione.

Prima ho messo da parte, ho pensato di chiedere suggerimenti qui.

È stato utile?

Soluzione

Non ho trovato una risposta a questo problema, e sto disturbati a ciò che il problema comporta per la sicurezza di Internet Explorer (ho dimenticato di dire nel mio precedente post la versione che sto usando:. IE 7)

Tuttavia, ho implementare una soluzione che io non sono felice con, ma comunque mi sento più a suo agio con oltre nessun controllo a tutti ...

Il codice tenta ora di aprire un altro oggetto prima, e se fallisce il codice presuppone che Word non aprirà neanche e genera un errore. Da questo punto in poi, non più chiamate a new ActiveXObject () sarà effettuato e ogni tentativo di un controllo ortografico si tradurrà in un errore.

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

Questo oggetto non avvia un nuovo processo quando la chiamata a new ActiveXObject () non riesce. Inoltre non ha un notevole effetto sulle risorse di sistema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top