Domanda

Sto cercando di registrare un file DLL COM in Windows Server 2008 R2. Ecco i passi che ho preso:

  1. Esegui come amministratore cmd
  2. c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll

Quando eseguire quel comando ottengo questo errore:

Il temp12.dll modulo non è stato caricato. Assicurarsi che il binario è memorizzato nel percorso specificato o debutto a verificare la presenza di problemi con i file binari .DLL o dipendenti. Il modulo specificato non è stato trovato.

sono stato in grado di registrare lo stesso file DLL in Windows 2000.

Ho provato anche

c:\windows\syswow64\regsvr32 "c:\tempdl\temp12.dll"

E ho ottenuto questo errore:

la c:\tempdl\temp12.dll modulo è stato caricato, ma la chiamata a DllRegisterServer non riuscita con codice di errore 0x80040154. Per ulteriori informazioni su questo problema, la ricerca on-line utilizzando il codice di errore come il termine di ricerca

È stato utile?

Soluzione

Questo è l'errore che si ottiene quando la DLL si richiede un altro server COM da registrare prima o ha una dipendenza su un'altra DLL che non è disponibile. Lo strumento Regsvr32.exe fa molto poco, si chiama LoadLibrary () per caricare la DLL che è passato nell'argomento della riga di comando. Poi GetProcAddress () per trovare il punto di ingresso DllRegisterServer () nella DLL. E lo chiama a lasciarlo fino al server COM per registrarsi.

Cosa che codice fa è abbastanza difficili da indovinare. La diagnostica si ha è comunque abbastanza auto-evidente dal codice di errore, per qualche motivo questo server COM ha bisogno un altro essere registrati prima. Il messaggio di errore è pessima, ma non dice cosa altro server di cui ha bisogno. Un triste effetto collaterale del modo in cui gestire le opere errore COM.

Per risolvere questo, strumento ProcMon uso SysInternals'. Esso mostra ciò che registro chiavi Regsvr32.exe (in realtà: il server COM) sta aprendo per trovare il server. Cercare accessi alla chiave CLSID. Che ti dà un suggerimento che cosa {guid} si sta cercando. Che ancora non abbastanza vi dico la DLL del server, si dovrebbe confrontare la traccia con quello che si ottiene da una macchina che funziona. La chiave InprocServer32 ha il percorso DLL.

Altri suggerimenti

Potrebbe essere necessario registrare questo DLL utilizzando la versione a 32 bit di regsvr32.exe:

c:\windows\syswow64\regsvr32 c:\tempdl\temp12.dll

Errore 0x80040154 è di COM REGDB_E_CLASSNOTREG, che significa "Classe non registrata". In sostanza, una classe COM non è dichiarato nel Registro di installazione.

Se si ottiene questo errore quando si tenta di registrare una DLL, può essere possibile che il codice di registrazione per questa DLL sta cercando di creare un'istanza di altro server COM (DLL o EXE), che manca o non è registrati su questa installazione.

Se non si ha accesso alla fonte originale DLL, vorrei suggerire di usare di Sysinternal Process Monitor per tenere traccia COM registro lookup (non uso per essere un più semplice strumento Baku ma non può più lavorare).

Si dovrebbe mettere un filtro sul processo di lavorazione (qui: Regsvr32.exe) per la cattura solo ciò che è interessante. Poi si dovrebbe guardare per le query su HKEY_CLASSES_ROOT \ [a progid , una stringa] che non riescono (con la errore di NAME_NOT_FOUND per esempio), o query su HKEY_CLASSES_ROOT \ CLSID \ [a guid] che sicuro.

PS: Purtroppo, ci possono essere molte cose che sembrano non riuscire su un sistema Windows perfettamente funzionante, quindi dovrete studiare attentamente tutti gli errori. Buona fortuna: -)

ho trovato problema simile durante la registrazione il mio ActiveX (OCX) in Windows 2008 server R2.To risolvere questo ho usato http://www.chestysoft.com/dllregsvr/default.asp tool.There è qualche problema con la mia dipendenza OCX così sto ottenendo" il modulo di temp12.dll è riuscito a caricare. assicurarsi che il binario viene memorizzato nel percorso specificato o il suo debutto a verificare la presenza di problemi con i file binari o DLL dipendenti. il modulo specificato non è stato trovato" messaggio di errore. Quando si tenta di registrato il tuo OCX con questo strumento sarà messaggio di prompt se l'OCX sta avendo dipendenza o si otterrà message.I successo ottenuto messaggio per mfc70.dll e Msvcr70.dll dependency.so i incollare questi dll nella cartella system32 di C : \ windows e la sua done.after che registro il mio ocx sucessfully.I utilizzato la versione a 32 bit di strumento Chestysoft (dllregsvr.exe) in Windows Server 2008 R2 64bit macchina.

Potrebbe essere necessario installare ATL se il vostro oggetti COM utilizzo ATL, come descritto da questo articolo KB:

http://support.microsoft.com/kb/201191

Queste librerie probabilmente dovrà essere fornito dagli sviluppatori per assicurare la versione corretta.

Questo è ciò che deve accadere.

È necessario copiare la DLL che si desidera registrare a: c: \ windows \ SysWOW64 \

Quindi, nella finestra di dialogo Esegui, digitare questo: C:\Windows\SysWOW64\regsvr32.exe c:\windows\system32\YourDLL.dll

e si otterrà il messaggio:

DllRegisterServer in c:. \ Windows \ system32 \ YourDLL.dll riuscito

È necessario il percorso completo del regsvr32% windir modo $ \ system32 \ regsvr32 <*. Dll>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top