2016-11-02 9 views
1

Я нахожусь в 64-битной системе Windows 10, и я зарегистрировал dll с помощью RegSvr32.DLL зарегистрирована, но не работает

я получил следующее сообщение после RegSvr32:

 --------------------------- 
    RegSvr32 
    --------------------------- 
    DllRegisterServer in myspecial.dll succeeded. 
    --------------------------- 
    OK 
    ---------------------------

Когда я попытался запустить базовый файл VBS, который делает следующее:

Set obj = CreateObject("myspecial.clsmycode")

Я получаю следующее сообщение после попытки для запуска этого кода VBS:

 --------------------------- 
    Windows Script Host 
    --------------------------- 
    Script: C:\test.vbs 
    Line: 3 
    Char: 9 
    Error: ActiveX component can't create object: 'myspecial.clsmycode' 
    Code: 800A01AD 
    Source:  Microsoft VBScript runtime error 

    --------------------------- 
    OK 
    ---------------------------

Кто-нибудь знает, что я делаю неправильно или что мне нужно сделать, чтобы заставить это работать?

+1

[Уже в этом ответили] (http://stackoverflow.com/a/35985827/692942) в большом количестве деталей перед , Несмотря на то, что вопрос относится к классическому ASP, то при регистрации любых COM-библиотек все равно применяется. – Lankymart

+1

Наиболее очевидной причиной является то, что вы запускаете 64-разрядную версию интерпретатора сценариев, но COM-сервер представляет собой 32-разрядную DLL. Или наоборот. Всегда пользуйтесь установщиком, предоставляемым поставщиком, и пользуйтесь телефоном, если у вас нет правильных инструкций по установке. –

+0

@HansPassant Не всегда есть «поставщик» *, COM-библиотека DLL настолько устарела, что больше не существует или в некоторых случаях написана в доме ... Вы можете просто решить проблему, выполнив контрольный список, который я представил в ответ выше * (см. разделы «Как регистрировать COM-DLL с Windows» и «Контрольный список DLL COM») *. Все дело в понимании различий архитектуры между 32/64 бит в ОС Windows. – Lankymart

ответ

1

Решение:

Моя 32-разрядные DLL был действительно зарегистрирован на моем 64-битной системе Windows 10, однако, я пытался запустить сценарий в 64-битном режиме. Кроме того, поскольку я пытался использовать эту DLL в ASP на IIS, она не работала, потому что 32-разрядные приложения не были включены.

Проблема была решена, выполнив следующие действия:

1) Включено 32-разрядных приложений в пуле приложений в настройках IIS.

2) Ran сценарий в 32-битном режиме с помощью этого метода:

A: How do I run a VBScript in 32-bit mode on a 64-bit machine?

+0

Итак, вы пропустили раздел, я заявляю * «На 64-битной ОС системные программы расположены в« *? Если вы прочтете, что вы знаете, чтобы запустить 'cscript.exe' из'% systemroot% \ SysWOW64', чтобы запустить его в 32-разрядной подсистеме. По крайней мере, вы нашли решение, я думаю. Вы также не ссылаетесь на веб-приложение, так почему вам нужно изменить настройки пула приложений IIS? Это чисто относится к веб-приложениям, использующим COM, например, для классического ASP. – Lankymart

+0

Хорошо, заметил комментарий ASP в ответ, который объясняет это. – Lankymart