Невозможно зарегистрировать DLL на сервере 2012
У нас есть старый классический ASP-сайт, который я пытаюсь разместить на новом сервере Server 2012. Он использует DLL, разработанную в домашних условиях на VB6.
Я скопировал установочный файл, и это ошибка. Я пытаюсь зарегистрировать DLL вручную, используя "regsvr32 pathToDll\theDll.dll", и она возвращается с ошибкой 0x80004005. Google предлагает мне запустить команду из командной строки с повышенными привилегиями. Так я и получаю ту же ошибку. Я также попытался запустить ту же команду из каталога SYSWOW64, и я получил ту же ошибку.
Через Google я также обнаружил, что это может быть из-за отсутствия зависимостей. Я использовал Dependency Walker и, конечно же, ему не хватало нескольких вещей. Итак, я узнал, что мне нужно было установить файлы среды выполнения VB6 и включить несколько функций, и все зависимости были разрешены. Поэтому я попытался перерегистрировать DLL, и она все еще выдает ту же ошибку.
Есть идеи? Я знаю, что это 32-битная DLL на 64-битной машине, но она должна по крайней мере зарегистрироваться.
1 ответ
Хорошо, после дополнительных поисков я обнаружил через Dependency Walker, что dll ссылается на API-MS-WIN-CORE-SYNCH-L1-1-0.DLL через цепочку других dll.
Основываясь на этой информации от Microsoft, не похоже, что она совместима как есть. Кажется, что мне пришлось бы перекомпилировать DLL, чтобы заставить эту работу изменять ссылки.
Решение: я раскручиваю виртуальную машину для этого унаследованного приложения.