New ActiveXobject ( 'Word.application')는 객체를 생성 할 수 없을 때 새로운 winword.exe 프로세스를 만듭니다.

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

문제

우리는 개인 회사 웹 사이트의 몇 가지 필드에 대한 MS Word를 주문 검사기로 사용하고 있으며 IE 보안 설정이 정확할 때 잘 작동합니다. (현장의 영역은 신뢰할 수없고 신뢰할 수있는 영역이 제어되지 않고 수정되었습니다.)

우리가 사용하는 스크립트는 단어 객체를 만들고 나중에 닫습니다. 객체가 존재하는 동안 Winword.exe 프로세스가 실행되지만 단어 객체가 닫히면 파괴됩니다.

당사 사이트가 신뢰할 수있는 영역 (기본 보안 수준의 인터넷 영역)에 설정되지 않은 경우 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
}

따라서 페이지가로드 될 때 마다이 코드가 다시 실행될 수있어 또 다른 Orphan Winword.exe 프로세스가 생성됩니다.

wordApplication 물론 캐치 블록에서 정의되지 않았습니다.

브라우저 보안 설정을 미리 감지하고 싶지만 이에 대한 검색을 수행했으며 가능하다고 생각하지 않습니다.

여기 관리는 그대로 만족합니다. IE 보안이 올바르게 설정되어있는 한 작동하며 우리의 목적에 적합합니다. (우리는 결국 맞춤법 검사 기능에 대한 다른 옵션을 살펴볼 수 있지만, 이것은 빠르고 저렴했으며 필요한 모든 것을 수행합니다.)

이 마지막 문제는 저를 버그로 만들고 그것에 대해 뭔가를하고 싶습니다. 그러나 나는 아이디어가없고 내 관심이 더 필요한 다른 것들이 있습니다.

내가 그것을 따로두기 전에, 나는 여기에 제안을 요청할 것이라고 생각했다.

도움이 되었습니까?

해결책

이 문제에 대한 답을 찾지 못했고 인터넷 익스플로러 보안에 대한 문제가 무엇을 의미하는지에 대한 방해가되었습니다 (이전 게시물에서 사용중인 버전을 언급하는 것을 잊었습니다. IE 7).

그러나 나는 만족스럽지 않은 해결 방법을 구현했지만 그럼에도 불구하고 전혀 확인하지 않는 것보다 더 편안하다고 느낍니다 ...

코드는 이제 다른 객체를 먼저 열려고 시도하고, 실패하면 코드가 단어가 열리지 않고 오류를 발행한다고 가정합니다. 이 시점부터 더 이상 New ActiveXobject ()에 대한 호출이없고 맞춤법 검사를 시도하면 오류가 발생합니다.

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

이 개체는 New ActiveXobject ()에 대한 호출이 실패 할 때 새 프로세스를 시작하지 않습니다. 또한 시스템 리소스에 눈에 띄는 영향을 미치지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top