2016-01-07 10 views
0

Dev окружающей среды:Регистрация 32биной DLL с SysWow64 Regsvr32 генерирует другой CLSID, то сообщение об ошибке

  • для Windows Server 2008 32 бита
  • Visual Studio 2010 Professional
  • Visual Basic 6

Целевая среда:

  • для Windows 2012 R2 64 бит

приложение VB6 (app.exe) опирается на COM-видимой .NET DLL (netdll.dll), которая опирается на себя COM DLL, порожденного Visual Basic 6 (обертка для обработки объекта ListBox, позволяет называть его vb6dll.dll).

Все они 32 бит, так как dev os 32 бит, как указано выше. Я также проверил их с file команды снабженной Cygwin:

[email protected]:~> file path/to/app.exe 
path/to/app.exe: PE32 executable (GUI) Intel 80386, for MS Windows 

[email protected]:~> file path/to/netDLL.dll 
path/to/netdll.dll: PE32 executable (DLL) (GUI) Intel 80386 Mono/.Net assembly, for MS Windows 

[email protected]:~> file path/to/vb6.dll 
path/to/vb6.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows 

RegAsm был использован для регистрации netdll.dll:

[email protected]:~> /cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/RegAsm ./netdll.dll /codebase /tlb:netdll.tlb 

SysWow64\RegSvr32 был использован для регистрации vb6dll.dll в мишени environnment.

[email protected]:~> /cygdrive/c/Windows/SysWOW64/regsvr32.exe ./vb6dll.dll 

Когда я запустить приложение VB6, я получил это сообщение:

Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154

Я думаю, что это не дубликат this question. Я выяснил CLSID vb6dll.dll изменен с Windows 2008 на Windows 2012 R2 ... И, похоже, почему netdll.dll не может найти его ... Если да, то почему регистрация ведет себя так?

Update: Я признаю, что я новичок с CLSID питанием ... Если я понимаю, это ясно, VB6 пишет себя идентификаторы CLSID для каждого COM-объекта, и этот CLSID, извлекается RegSvr32. Если это правда, почему версия RegSvr32 (SysWow64) Windows 2012 записывает другой CLSID в реестр?

+0

Я буду очень благодарен за понимание того, почему я получил это предложение. – Amessihel

ответ