Скрипты Windows не могут найти ссылку - PullRequest
0 голосов
/ 31 августа 2011

У меня есть файл сценария Windows, который больше не работает.

Сценарий выглядит следующим образом

<job>
    <reference object="Some.Component.1" />
    <script language="VBScript">

x = CreateObject("Some.Component.1")
MsgBox TypeName(x)

    </script>
</job>

Когда я запускаю сценарий с помощью cscript или wscript, я получаю сообщение об ошибке

Узел сценариев Windows: не удается найти библиотеку типов для этой ссылки: Some.Component.1

Код ошибки: 0x80040068, что означает «Неверный индекс».(Я пытался удалить индекс .1, но он не работал)

Странно то, что если я удаляю строку <reference object="Some.Component.1"/>, строка CreateObject работает и объект создается.

Я знаю, что скрипт работал около года назад.Библиотека Some.Component была обновлена, но поскольку CreateObject работает, я понятия не имею, что с ней не так.

Я протестировал скрипт на Server 2008 R2 (64-битная версия), Server 2003 (32-битная версия) и Windows7 (64 бита) с той же ошибкой.

Some.Component является 32-битным.Для 64-битных машин я использовал cscript, wscript в папке SysWow64.

(мне нужен <reference../> для доступа к перечислениям внутри компонента)

1 Ответ

1 голос
/ 30 января 2012

Библиотека типов не зарегистрирована.Это другая и отдельная вещь от регистрируемого объекта.Обычно элемент управления выполняет оба действия.

Я предлагаю сначала попробовать отменить регистрацию и перерегистрацию DLL.

regsvr32.exe /u c:\path\to\control.dll
regsvr32.exe c:\path\to\control.dll

Если это не сработает, попробуйте использовать RegTLib.exe для прямой регистрации библиотеки типов (*.tlb).

regtlib.exe c:\path\to\control.dll

ИЛИ

regtlib.exe c:\path\to\control.tlb

Обратите внимание, что библиотека типов может быть отдельным файлом или может быть встроена в DLL.

Подробнее о regTLib.exe см. Здесь:

...