IEのセキュリティは、オブジェクトを作成することはできません場合は、新しいActiveXObjectを(「Word.Application」)は、新たなWINWORD.EXEプロセスを作成します
-
19-09-2019 - |
質問
私たちは、民間企業のWebサイト上のいくつかのフィールドのためのスペルチェッカーとしてMS Wordを使用しており、IEのセキュリティ設定が正しいとき、それがうまく動作します。 (信頼に設定するサイトのゾーン、信頼できるゾーンはプロンプトを表示せずに実行する制御を可能にするように変更。)
私たちが使用しているスクリプトは、単語オブジェクトを作成し、その後、それを閉じます。オブジェクトが存在する間、WINWORD.EXE処理が実行されますが、Wordオブジェクトを閉じたときに、それが破棄されます。
私たちのサイトは信頼ゾーン(デフォルトのセキュリティレベルのインターネットゾーン)Wordオブジェクトが期待通りに失敗しますが、WINWORD.EXEプロセスはまだ作成された作成の呼び出しで設定されていない場合。私は、スクリプトの中でこのプロセスと対話する方法を持っていないので、ユーザーがログオフするまでのプロセスは、周りのまま(ユーザーが手動のプロセスを破壊する方法がありません、それは彼らがした場合でも、良い解決策ではないでしょう。 )
オブジェクトを作成しようと呼び出しがある...
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
}
だから、ページは、このコードをロードされるたびに、さらに別の孤児WINWORD.EXEのプロセスを作成し、再実行することができる。
wordApplication
は、もちろん、catchブロックで定義されていません。
私は事前にブラウザのセキュリティ設定を検出できるようにしたいが、私はこの上でいくつかの検索を行っているし、それが可能であるとは思わない。
ここでの管理は、それがあるとして、それに満足しています。限りIEのセキュリティが正しく設定されているとして、それは動作しますが、それが我々の目的に適しています。 (私たちは、最終的にはスペルチェック機能のための他のオプションを見てもよいが、これは、安価、迅速だったと我々はそれを行うために必要なすべてを行います。)
この最後の問題のバグは、私と私はそれについて何かをしたいのですが、私はアイデアの出だと私は私の注意を必要としているよりある他のものを持っています。
私はそれを脇に置く前には、私がここで提案をお願いしたいと思っています。
解決
私はこの問題への答えを見つけていない、と私は問題は、Internet Explorerのセキュリティについて暗示するもので乱れています(私は私が使用しています、私の以前の記事でバージョンを言及するのを忘れてしまった:IE 7)
しかし、私はと満足していない回避策を実装しましたが、それでもまったくのチェックよりもとより快適に感じる...
コードは最初に別のオブジェクトを開こうとし、それが失敗した場合のコードは、Wordのいずれかを開かないことを前提とエラーを発行します。この時点から、新しいActiveXObjectの(へのこれ以上の呼び出し)が行われることはありませんし、スペルチェックでも結果はエラーになります。
try {
oMSInfo = new ActiveXObject('Msinfo32.MSInfo.1');
} catch (error) {
// error handling code not shown...
return;
}
新しいActiveXObjectを()の呼び出しが失敗したときにこのオブジェクトは、新しいプロセスを開始しません。また、顕著なシステムリソースへの影響はありません。