2010-03-09 4 views
3

Я пытаюсь запустить сценарий VBScript, который использует 7-летний сторонний 32-разрядный COM-компонент в Windows Server 2008 R2, с 32-разрядным узлом сценария командной строки, SysWOW64 \ cscript.exe. Когда я вызываю CreateObject в классе, он кажется успешным, но в первый раз, когда я пытаюсь использовать свойство или метод (я пробовал несколько разных) на объекте, он дает мне «катастрофический сбой». У меня одинаковые результаты с SysWOW64 \ wscript.exe, за исключением того, что мое сообщение об ошибке появляется в msgbox вместо окна командной строки.Как решить «катастрофический сбой» с 32-битным COM-компонентом в SysWOW64 cscript или wscript

Я думаю, что это должно делать конкретно с 64-разрядным сценариев хостами из-за следующим:

  1. Эквивалентного сценарий Классического ASP, называя один и тот же компонент, и используя 95% ту же коду, работает правильно на том же сервере, с IIS, настроенным на поддержку 32-битного COM.
  2. Тот же VBScript работает правильно на 32-разрядной машине под управлением Windows XP и 32-разрядной машине Windows Server 2003.
  3. Компонент не работает точно так же на моей 64-битной машине Windows 7.

В моих поисковых системах Google для решения этой проблемы в основном возникло множество различных проблем, которые были решены путем помещения COM-компонента в панель инструментов в Visual Studio. Очевидно, что это решение здесь не применяется.

Моих вопросов:

  1. Есть ли основная проблема, которая всегда за «катастрофический отказом» от сценариев хоста Windows, вызывающей COM компонента?
  2. Есть ли место в оснастке конфигурации или в реестре, где мне нужно внести изменения, аналогичные изменениям, которые я должен был внести в пул приложений IIS для «Включить 32-разрядные приложения»?
  3. Есть ли общее место в средстве просмотра событий Server 2008 R2, которое я должен искать, чтобы узнать, есть ли какие-либо подробности об отказе, на случай, если он окажется конкретным для этого компонента?

Заранее спасибо.

+0

Я думаю, что я, возможно, создал самый непривлекательный вопрос. Вероятно, нужно было поместить меньше информации в сюжетную линию, например, одну из этих фотографий на сайте знакомств, где вы можете видеть только ухо человека. Я никогда не ходил весь первый час - во время прайм-тайма StackOverflow - всего 6 просмотров. Браво меня. –

ответ

3

Не читайте ничего в тексте ошибки. «Катастрофический сбой» должен быть наихудшим названным кодом HRESULT. Программист использовал код ошибки E_UNEXPECTED, он распространен в программировании COM. Обычно это указывает: «Я не могу выполнить эту работу, но я не знаю почему». Что, конечно, не оставляет вам много вариантов, чтобы понять, почему.

Вряд ли он напрямую связан с запуском 64-разрядной версии Windows. Вы используете 32-битные узлы сценариев, они отлично справляются с предоставлением 32-разрядной среды выполнения для COM-серверов. Гораздо более вероятно, что есть что-то неладное с установкой, какой-то недостающий компонент. Единственный хороший способ разобраться в этом - связаться с автором или поставщиком COM-сервера для поддержки. Если это нецелесообразно, попробуйте запустить это на виртуальном ПК, который загружает более раннюю версию Windows.

Смежные вопросы