Ho provato a utilizzare il seguente codice:
cd c:\windows\system32
regsvr32.exe dllname.ax
Ma questo non funziona per me. Come posso registrare un file DLL su Windows 7 con un processore a 64 bit?
Ho provato a utilizzare il seguente codice:
cd c:\windows\system32
regsvr32.exe dllname.ax
Ma questo non funziona per me. Come posso registrare un file DLL su Windows 7 con un processore a 64 bit?
Risposte:
Digita regsvr32 name.dll
nel prompt dei comandi (eseguito in modalità elevata!) E premi "Invio". Notare che name.dll
dovrebbe essere sostituito con il nome della DLL che si desidera registrare. Ad esempio, se desideri registrare iexplore.dll, digita regsvr32 iexplore.dll
.
regsvr32
percorso del file .dll con nome ed estensione e premere invio
Bene, non specifichi se si tratta di una dll a 32 o 64 bit e non includi il messaggio di errore, ma immagino che sia lo stesso problema descritto in questo articolo della Knowledge Base: Messaggio di errore quando esegui Regsvr32.exe su Windows a 64 bit
Citazione da quell'articolo:
Questo comportamento si verifica perché il file Regsvr32.exe nella cartella System32 è una versione a 64 bit. Quando si esegue Regsvr32 per registrare una DLL, per impostazione predefinita si utilizza la versione a 64 bit.
Soluzione da quell'articolo:
Per risolvere questo problema, eseguire Regsvr32.exe dalla cartella% SystemRoot% \ Syswow64. Ad esempio, digita i seguenti comandi per registrare la DLL:
cd \windows\syswow64
regsvr32 c:\filename.dll
Se la DLL è a 32 bit:
Copia la DLL in C: \ Windows \ SysWoW64 \
In un prompt dei comandi con privilegi elevati :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
se la DLL è a 64 bit:
Copia la DLL in C: \ Windows \ System32 \
In un prompt dei comandi con privilegi elevati :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
So che sembra il modo sbagliato, ma è così che funziona. Vedere:
http://support.microsoft.com/kb/249873
Quote: "Nota Su una versione a 64 bit di un sistema operativo Windows, ci sono due versioni del file Regsv32.exe:
La versione a 64 bit è% systemroot% \ System32 \ regsvr32.exe.
La versione a 32 bit è% systemroot% \ SysWoW64 \ regsvr32.exe.
"
Su un sistema x64, system32 è per 64 bit e syswow64 è per 32 bit (non il contrario come indicato in un'altra risposta). WOW (Windows su Windows) è il sottosistema a 32 bit che viene eseguito nel sottosistema a 64 bit).
È un pasticcio in termini di denominazione e serve solo a confondere, ma è così.
Ancora ...
syswow64 è a 32 bit, NON a 64 bit.
system32 è a 64 bit, NON a 32 bit.
C'è un regsrv32 in ciascuna di queste directory. Uno è a 64 bit e l'altro a 32 bit. È lo stesso accordo con odbcad32 ed et al. (Se vuoi vedere i driver ODBC a 32 bit che non verranno visualizzati con l'odbcad32 predefinito in system32 che è a 64 bit.)
regsvr32
si prenderà cura dei dettagli, teoricamente in grado di rilevare se si sta registrando una DLL a 32 bit o 64 bit: stackoverflow.com/questions/18935163/...
Apri il menu Start e digita cmd nella casella di ricerca Tieni premuto Ctrl + Maiusc e premi Invio
Questo esegue il prompt dei comandi in modalità amministratore.
Ora digita: regsvr32 MyComobject.dll
Finalmente ho trovato la soluzione basta eseguire CMD come amministratore e poi scrivere
cd \windows\syswow64
allora scrivi questo
regsvr32 c:\filename.dll
Spero che questa risposta ti possa aiutare
Se la DLL è a 32 bit:
se la DLL è a 64 bit:
Tutto qui stava fallendo come percorso sbagliato. Poi mi sono ricordato di un trucco dei vecchi tempi di Win95. Apri la cartella del programma in cui risiede il file .dll, apri C: / Windows / System32 scorri verso il basso fino a regsvr32 e trascina e rilascia il dll dalla cartella del programma su rgsrver32. Boom, fatto.
Conoscere il messaggio di errore sarebbe piuttosto prezioso. Ha lo scopo di fornire informazioni, anche se non ha alcun senso per te, lo fa per noi. Essendo costretto a indovinare, direi che la DLL è un filtro DirectX a 32 bit. In tal caso, questa dovrebbe essere la giusta linea di condotta:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Deve essere eseguito a un prompt dei comandi con privilegi elevati in modo che l'UAC non possa interrompere l'accesso al registro richiesto. Fai altre domande su questo su superuser.com
Ho appena testato questo metodo estremamente semplice e funziona perfettamente, ma utilizzo l'account amministratore integrato, quindi non devo fare i salti mortali per privilegi elevati.
Il seguente file batch solleva l'utente dalla necessità di spostare i file dentro / fuori le cartelle di sistema. Lascia anche a Windows l'applicazione della versione corretta di Regsvr32
.
ISTRUZIONI:
Nella cartella che contiene la libreria ( -.dll
o -.ax
) il file che desideri registrare, apri un nuovo file di testo e incolla UNA delle routine seguenti:
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
copy %1 C:\Windows\System32
regsvr32 "%nx1"
echo END BATCH FILE
pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
copy %1 C:\Windows\SysWOW64
regsvr32 "%nx1"
echo END BATCH FILE
pause
Salva il tuo nuovo file di testo come file batch ( -.bat
); quindi trascina semplicemente il tuo file -.dll
o -.ax
sopra il file batch.
Se l'UAC non ti dà la possibilità di eseguire il file batch come amministratore, potrebbe essere necessario elevare manualmente i privilegi (le istruzioni sono per Windows 7):
Create shortcut
;Properties
;Compatibility
scheda;Run this program as administrator
;-.dll
o -.ax
sopra il nuovo collegamento invece del file batch.È tutto . Ho scelto COPY
invece di MOVE
impedire il fallimento di qualsiasi tentativo di follow-up relativo all'UAC. La registrazione corretta dovrebbe essere seguita dalla cancellazione del file della libreria ( -.dll
o -.ax
) originale.
Non preoccuparti delle copie effettuate nella cartella di sistema ( C:\Windows\System32
o C:\Windows\SysWOW64
) dai passaggi precedenti: verranno sovrascritte ogni volta che esegui il file batch.
A meno che tu non abbia eseguito il file batch sbagliato , nel qual caso probabilmente vorrai eliminare la copia fatta nella cartella di sistema sbagliata ( C:\Windows\System32
o C:\Windows\SysWOW64
) prima di eseguire il file batch corretto, ... o ...
Aiuta Windows a scegliere il file di libreria corretto da registrare qualificando completamente la sua posizione nella directory.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
dal percorso della cartella di sistemaEsegui questo file batch di fucile, che (in ordine):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
è disattivato quando ho creato un collegamento per il file bat. Ho effettuato l'accesso come amministratore. Inoltre, è %nx1
o %n1
?
C'è una differenza in Windows 7. L'accesso come amministratore non concede gli stessi diritti di quando si esegue un programma come amministratore.
Vai a Start - Tutti i programmi - Accessori. Fare clic con il tasto destro sulla finestra di comando e selezionare "Esegui come amministratore" Ora registrare normalmente la dll tramite: regsrvr32 xxx.dll
E mentre lo fai, se ottieni il codice di errore 0x80040201, prova la soluzione in DllRegisterServer non riuscita con il codice di errore 0x80040201 , ma assicurati di aprire il prompt dei comandi come Esegui come amministratore .
Parte della confusione riguardante regsvr32 è che su Windows a 64 bit il nome e il percorso non sono cambiati, ma ora registra le DLL a 64 bit. Il regsvr32 a 32 bit esiste in SysWOW64, un nome che sembra rappresentare le applicazioni a 64 bit. Tuttavia il WOW64 nel nome si riferisce a Windows su Windows 64, o più esplicitamente Windows a 32 bit su Windows a 64 bit. Quando la pensi in questo modo, il nome ha senso anche se in questo contesto crea confusione.
Non riesco a trovare la mia fonte originale su un blog MSDN ma è referenziata in questo articolo di Wikipedia http://en.wikipedia.org/wiki/WoW64
Ecco come ho risolto questo problema su una macchina Win7 x64:
"CoCreateInstance () non riuscita. Controlla le voci di registro CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} e assicurati di aver effettuato l'accesso come amministratore"
Spero che questo ti aiuti !
regsvr32
, una DLL deve esportare le funzioniDllRegisterServer
eDllUnregisterServer
. Non è presente alcun registro per la stragrande maggioranza delle DLL create.