3

民間企業のWebサイトのいくつかのフィールドのスペルチェッカーとしてMSWordを使用しており、IEのセキュリティ設定が正しければうまく機能します。(サイトのゾーンがTrustedに設定され、Trusted Zoneが変更されて、プロンプトなしで制御を実行できるようになりました。)

使用しているスクリプトは、単語オブジェクトを作成し、後で閉じます。オブジェクトが存在する間、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のセキュリティが正しく設定されている限り、それは機能し、私たちの目的にはうまく機能します。(最終的には、スペルチェック機能の他のオプションを検討する可能性がありますが、これは迅速で安価であり、必要なすべてのことを実行します。)

この最後の問題は私を悩ませ、私はそれについて何かしたいのですが、私はアイデアがなく、他にも注意が必要なことがあります。

脇に置く前に、ここで提案をお願いしたいと思いました。

4

2 に答える 2

1

私はこの問題に対する答えを見つけられず、問題がInternet Explorerのセキュリティについて何を意味するのか不安になっています(以前の投稿で、使用しているバージョン:IE 7について言及するのを忘れていました)。

しかし、私は満足していない回避策を実装しましたが、それでもチェックをまったく行わないよりも快適に感じます...

コードは最初に別のオブジェクトを開こうとしますが、それが失敗した場合、コードはWordも開かないと想定し、エラーを発行します。この時点から、新しいActiveXObject()の呼び出しは行われなくなり、スペルチェックを試みるとエラーが発生します。

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

new ActiveXObject()の呼び出しが失敗した場合、このオブジェクトは新しいプロセスを開始しません。また、システムリソースに目立った影響はありません。

于 2010-03-18T20:21:20.170 に答える
0

ブラウザがオブジェクトのインスタンスを作成する場合、セキュリティリークである場合を除いて、オブジェクト自体はブラウザのセキュリティポリシーによってブロックされません。

「application.visible=true」または「application.show()」を試して、アプリケーションがユーザーの操作を要求している場所を見つけてください。

ヒント:「typeofapplication == "undefined"」は、変数「application」が定義されていないことを意味します。「typeof application == "unknown"」は、多かれ少なかれ、外部の独自仕様が詰め込まれた定義済み変数であることを意味します。オブジェクトとそれを処理する方法を本当に知る必要がある場合は、マニュアルを読んでください-言及されたアプリケーションの開いているウィンドウで[F11]を押すと、その場合に役立つ可能性があります。

役立つリソースになる可能性があります:https ://docs.microsoft.com/en-us/office/vba/api/Word.Application

于 2021-11-30T17:15:59.043 に答える