Не удается зарегистрировать RESEDIT.DLL в Windows Server 2008

У меня есть устаревшее приложение VB6, которое мы пытаемся запустить на RDP-подключении к серверу Windows 2008. Все мои другие устаревшие приложения, кажется, работают нормально, но это не работает. Я попытался переустановить приложение из установочного файла, но при попытке зарегистрировать файл RESEDIT.DLL это не удается. Я попытался зарегистрировать файл вручную с помощью regsvr32, но это просто дает мне следующую ошибку:

The module "C:\Windows\SysWOW64\RESEDIT.DLL" was loaded but the call to DllRegisterServer failed with error code 0x80004005.

Когда я исследовал это, я нашел обсуждения возможных проблем с зависимостями файлов, но я просмотрел каждую связанную DLL в пакете установки, и все они успешно зарегистрированы. Я убедился, что запускаю regsvr32 из командной строки с повышенными правами, но всегда возникает одна и та же ошибка.

Мы установили приложение на виртуальную машину Windows 7, и оно установилось без ошибок. Файл RESEDIT.DLL, по-видимому, успешно зарегистрирован, и приложение запускается без ошибок. Однако при запуске приложения из системы Windows Server 2008 по-прежнему возникают ошибки. Это началось с ошибки «Недостаточно памяти» (ошибка № 7), но теперь я получаю сообщение о том, что «компонент ActiveX не может создать объект» (ошибка № 429), вероятно, из-за различных шагов по устранению неполадок, которые мы следили до сих пор.

Кто-нибудь знает, как заставить RESEDIT.DLL установить и правильно зарегистрировать на Windows Server 2008?


person G_Hosa_Phat    schedule 24.10.2016    source источник
comment
Если это 32-битная dll, зарегистрируйте ее, используя c:\windows\syswow64\regsvr32.   -  person    schedule 25.10.2016
comment
Спасибо, но выдает ту же ошибку.   -  person G_Hosa_Phat    schedule 25.10.2016
comment
Ваше сообщение об ошибке просто означает FAIL, оно не указывает причину.   -  person    schedule 25.10.2016
comment
Да, это то, что я находил, но я не могу понять, почему это не работает. Я просматривал журналы событий и всевозможные поисковые запросы Google, но не могу определить, что вызывает сбой в этой конкретной среде.   -  person G_Hosa_Phat    schedule 25.10.2016
comment
Запустите Regsvr32 под Windbg. При ошибках вы увидите стек вызовов и параметры каждой функции. См. мой ответ здесь stackoverflow.com/questions/38148571/vb6-debugging-compiled   -  person    schedule 25.10.2016
comment
Если это resedit.dll VB6, то это не часть программ, а надстройка VB6 для редактирования ресурсов. В VB6, меню надстроек, менеджер надстроек, выберите Редактор ресурсов VB6, затем меню Инструменты и Редактор ресурсов.   -  person    schedule 25.10.2016
comment
Хорошо, я просмотрел все файлы DLL и OCX, используемые приложением, и перерегистрировал их. Я не уверен, что именно я сделал, но кажется, что я каким-то образом преодолел ошибку «Недостаточно памяти», которую я получал. На всякий случай я вернулся к исходному коду приложения, нашел ссылку на RESEDIT.DLL и удалил ее, а затем перекомпилировал. Все скомпилировалось успешно, поэтому я попробовал еще раз, но на этот раз я получаю ошибку 429, когда приложение пытается вызвать метод FileSystemObject... Два шага вперед, но один шаг назад.   -  person G_Hosa_Phat    schedule 25.10.2016
comment
Попробуйте использовать позднее связывание. Set fso = CreateObject("Scripting.FileSystemObject"). Вы не должны иметь эту dll как часть вашей программы, так как это системная библиотека. Таким образом, в вашу программу должны быть включены только библиотеки DLL VB6, а не библиотеки Windows.   -  person    schedule 25.10.2016
comment
Вы используете regsvr32 от имени администратора? Это может привести к сбою с этим сообщением об ошибке, если нет, в некоторых случаях.   -  person StayOnTarget    schedule 25.10.2016