Новый ActiveXObject ('Word.Application') создает новый процесс winword.exe, когда безопасность IE не позволяет создавать объекты - PullRequest
3 голосов
/ 11 марта 2010

Мы используем 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, конечно, не определено в блоке перехвата.

Я бы хотел заранее определить настройки безопасности браузера, но я провел некоторый поиск по этому ине думайте, что это возможно.

Менеджмент здесь доволен им как есть.Пока безопасность IE установлена ​​правильно, она работает, и она хорошо работает для наших целей.(В конечном итоге мы можем рассмотреть другие варианты проверки правописания, но это было быстро, недорого и делает все, что нам нужно для этого.)

Эта последняя проблема меня беспокоит, и я хотел бы кое-что с этим сделатьэто, но у меня нет идей, и у меня есть другие вещи, которые больше нуждаются в моем внимании.

Прежде чем отложить это в сторону, я подумал, что я бы попросил предложения здесь.

1 Ответ

1 голос
/ 18 марта 2010

Я не нашел ответа на эту проблему, и меня беспокоит то, что проблема подразумевает в безопасности Internet Explorer (я забыл упомянуть в своем предыдущем посте версию, которую я использую: IE 7.)

Однако я применил обходной путь, который меня не устраивает, но, тем не менее, чувствую себя более комфортно, чем вообще никаких проверок ...

Код теперь пытается сначала открыть другой объект, и, если это не удается, код предполагает, что Word тоже не откроется, и выдает ошибку. С этого момента больше не будет вызовов нового ActiveXObject (), и любая попытка проверки орфографии приведет к ошибке.

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

Этот объект не запускает новый процесс при сбое вызова нового ActiveXObject (). Это также не оказывает заметного влияния на системные ресурсы.

...