Проблема создания простых «компонентов сценариев Windows» в Windows 7 - PullRequest
3 голосов
/ 11 февраля 2010

Я пытаюсь заставить работать Windows Script Component и машину для разработки x64. Работает нормально на х32 бит. Но, похоже, он не запускается, у меня одна и та же проблема с JScript и VBScript.

Вот самый простой из возможных компонентов wsc. Все, что он делает, это выскакивает «Привет» в окне сообщения. Если вы сохраните приведенный ниже фрагмент в файл с именем test_lib.wsc, вы сможете щелкнуть правой кнопкой мыши и зарегистрировать его. Теперь он доступен как COM-компонент.

<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
    description="Test Script Library"
    progid="TestScript.Lib"
    version="1.00"
    classid="{314042ea-1c42-4865-956f-08d56d1f00a8}"
>
</registration>
<public>
  <method name="Hello">
  </method>
</public>
<script language="VBScript">
<![CDATA[
Option Explicit
Function Hello()
    MsgBox("Hello.")
End Function
]]>
</script>
</component>

Затем создайте следующий пример vb-скрипта и сохраните его в файл с именем test.vbs

dim o
set o = createobject("TestScript.Lib")
o.hello()

Когда я запускаю test.vbs с помощью cscript или wscript, я всегда получаю следующее. "C: \ test.vbs (3, 1) Ошибка времени выполнения Microsoft VBScript: компонент ActiveX не может создать объект: 'TestScript.Lib'"

Это прекрасно работает на 32-битной XP. У кого-нибудь есть идеи о том, что может быть не так?

Спасибо большое Noel.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2010

При регистрации wsc из контекстного меню Wndows Explorer у меня все работало нормально на 64-битной Windows 7.

У меня были проблемы с запуском из 32-битной командной строки, там мне пришлось заново зарегистрировать wsc с regsvr32 из %windir%\sysWOW64, затем он работал нормально как с 64-х, так и с 32-х битными версиями cscript.exe, при запуске из 64 или 32 командной строки.

Вы уверены, что при регистрации wsc вы используете regsvr32 из папки %windir%\sysWOW64?

Существует две версии regsvr32, одна 32-битная (в sysWOW64), одна 64-битная (в system32), обе они называются regsvr32.

Confused? Присоединяйтесь к нам:)

Вот хорошая ссылка, которая выделяет некоторые ошибки на 64-битной Windows: Все то же самое, но очень разные

0 голосов
/ 11 февраля 2010

Необходимо убедиться, что вы запускаете его с 32-битной версией WScript или CScript.

По умолчанию он будет работать с 64-битной версией и не сможет загружать 32-битные компоненты.

32-битные версии WScript и CScript находятся в "%SystemRoot%\SysWOW64\

Я добавляю новый раздел реестра с RegEdit: -

HKEY_CLASSES_ROOT\VBSFile\Shell\Open32\Command

и присвоить ему значение по умолчанию: -

"%SystemRoot%\SysWOW64\WScript.exe" "%1" %*

Это дает мне запись Open32 в контекстном меню файла VBS.

Для выполнения CScript вам необходимо убедиться, что путь к CSript получает версию папки SysWOW64.

...