Новый ActiveXObject('Слово.Приложение") создает новый winword.exe процесс, когда безопасность IE не позволяет создавать объект

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

Вопрос

Мы используем MS Word в качестве средства проверки орфографии для нескольких полей на веб-сайте частной компании, и при правильных настройках безопасности IE оно работает хорошо.(Зона для сайта установлена в значение "Доверенная", а "доверенная зона" изменена, чтобы разрешить запуск управления без запроса.)

Используемый нами скрипт создает объект word и после этого закрывает его.Пока объект существует, выполняется 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 также не откроется, и выдает ошибку.С этого момента больше не будет выполняться вызовов 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