Come registro un file DLL su Windows 7 64-bit?

Ho provato ad usare 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?

Digita regsvr32 name.dll nel Prompt dei comandi (eseguito in modalità elevata!) E premi “Invio”. Si noti che name.dll deve essere sostituito con il nome della DLL che si desidera registrare. Ad esempio, se si desidera registrare il file iexplore.dll, digitare regsvr32 iexplore.dll .

Beh, non si specifica se si tratta di una dll a 32 o 64 bit e non si include il messaggio di errore, ma suppongo che si tratti dello stesso problema descritto in questo articolo della Knowledge Base: Messaggio di errore quando si esegue Regsvr32.exe su Windows a 64 bit

Citazione da questo 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, si utilizza la versione a 64 bit per impostazione predefinita.

Soluzione da questo articolo:

Per risolvere questo problema, eseguire Regsvr32.exe dalla cartella% SystemRoot% \ Syswow64. Ad esempio, digitare 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 %windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll 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 %windir%\System32\regsvr32.exe %windir%\System32\namedll.dll elevati : %windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

So che sembra il modo sbagliato, ma funziona così. Vedere:

http://support.microsoft.com/kb/249873
Citazione: “Nota In una versione a 64 bit di un sistema operativo Windows, esistono 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 eseguito nel sottosistema a 64 bit).

È un casino in termini di nomi e serve solo a confondere, ma è così.

Ancora …

syswow64 è a 32 bit, NON a 64 bit.

system32 è 64 bit, NON 32 bit.

C’è un regsrv32 in ognuna di queste directory. Uno è a 64 bit e l’altro a 32 bit. È lo stesso accordo con odbcad32 ed et al. (Se si desidera vedere i driver ODBC a 32 bit che non verranno visualizzati con l’odbcad32 predefinito in system32, che è 64 bit.)

Aprire il menu Start e digitare cmd nella casella di ricerca. Tenere premuto CTRL + MAIUSC e premere Invio

Questo esegue il prompt dei comandi in modalità amministratore.

Adesso scrivi: regsvr32 MyComobject.dll

Se la DLL è a 32 bit:

  1. Copia la DLL in C: \ Windows \ SysWoW64 \
  2. In cmd elevato:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namedll.dll

se la DLL è a 64 bit:

  1. Copia la DLL in C: \ Windows \ System32 \
  2. In cmd elevato:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namedll.dll

Finalmente ho trovato la soluzione solo eseguire CMD come amministratore quindi scrivere

 cd \windows\syswow64 

quindi scrivi questo

 regsvr32 c:\filename.dll 

Spero che la risposta ti possa aiutare

Tutto qui stava fallendo come percorso sbagliato. Poi ho ricordato un trucco dei vecchi Win95 giorni. Aprire la cartella del programma in cui si trova il file .dll, aprire C: / Windows / System32 scorrere verso il basso su regsvr32 e trascinare e rilasciare la 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. Essendo costretto a indovinare, direi che la DLL è un filtro DirectX a 32 bit. In tal caso, questa dovrebbe essere la giusta linea d’azione:

 cd c:\windows\syswow64 move ..\system32\dllname.ax . regsvr32.exe dllname.ax 

Questo deve essere eseguito a un prompt dei comandi con privilegi elevati in modo che UAC non possa interrompere l’accesso al registro richiesto. Fai altre domande al riguardo su superuser.com

Ho appena testato questo metodo estremamente semplice e funziona perfettamente, ma utilizzo l’account Administrator incorporato, quindi non devo passare da un anello all’altro per privilegi elevati.

Il seguente file batch allevia l’utente della 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 il file della libreria ( -.dll o -.ax ) che desideri registrare, apri un nuovo file di testo e incolla in UNA delle routine sottostanti:

     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 un file batch ( -.bat ); quindi basta trascinare e rilasciare il file -.dll o -.ax sopra il file batch.

  • Se UAC non ti dà la possibilità di eseguire il file batch come amministratore, potresti dover elevare manualmente i privilegi (le istruzioni sono per Windows 7):

    1. Fare clic con il tasto destro sul file batch;
    2. Seleziona Create shortcut ;
    3. Fai clic destro sulla scorciatoia;
    4. Selezionare Properties ;
    5. Fare clic sulla scheda Compatibility ;
    6. Seleziona la casella Run this program as administrator ;
    7. Trascina e rilascia il file -.dll o -.ax sopra il nuovo collegamento invece del file batch.

Questo è tutto . Ho scelto COPY invece di MOVE per prevenire il fallimento di qualsiasi tentativo di follow-up relativo a UAC. La registrazione -.dll dovrebbe essere seguita dalla cancellazione del file della libreria originale ( -.dll o -.ax ).

Non preoccuparti delle copie eseguite nella cartella di sistema ( C:\Windows\System32 o C:\Windows\SysWOW64 ) con pass precedenti: verranno sovrascritte ogni volta che si esegue il file batch.

A meno che non sia stato eseguito il file batch errato , in questo caso è probabile che si desideri eliminare la copia effettuata nella cartella di sistema errata ( C:\Windows\System32 o C:\Windows\SysWOW64 ) prima di eseguire il file batch corretto, … o…

  • Aiuta Windows a scegliere il file di libreria giusto da registrare, qualificando completamente la posizione della directory.

    1. Dal file batch corretto copiare il percorso della cartella di sistema
      • Se 64-bit: C:\Windows\System32
      • Se 32-bit: C:\Windows\SysWOW64
    2. %nx1 sulla riga successiva in modo che preceda %nx1
      • Se 64-bit: regsvr32 "C:\Windows\System32\%nx1"
      • Se 32-bit: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Incolla il percorso tra virgolette
        • Inserisci la barra rovesciata per separare %nx1 dal percorso della cartella di sistema
      • o
  • Esegui questo file batch shotgun, che (in ordine):

    1. Eseguire la pulizia dei processi di registrazione interrotti
      • Invertire qualsiasi processo di registrazione completato dal file della tua biblioteca;
      • Eliminare tutte le copie del file della libreria che sono state salvate in una delle cartelle di sistema;
      • Pausa per consentire all’utente di terminare il file batch a questo punto (ed eseguirne un altro se lo si desidera).
    2. Tentativo di installazione a 64 bit sul file della libreria
      • Copia il tuo file di libreria in C:\Windows\System32 ;
      • Registra il tuo file di libreria come processo a 64 bit;
      • Pausa per consentire all’utente di terminare il file batch a questo punto.
    3. Annulla l’installazione a 64 bit
      • Invertire la registrazione del file della libreria come processo a 64 bit;
      • Elimina il tuo file di libreria da C:\Windows\System32 ;
      • Pausa per consentire all’utente di terminare il file batch a questo punto (ed eseguirne un altro se lo si desidera).
    4. Tentativo di installazione a 32 bit sul file della libreria
      • Copia il tuo file di libreria in C:\Windows\SystemWOW64
      • Registra il tuo file di libreria come processo a 32 bit;
      • Pausa per consentire all’utente di terminare il file batch a questo punto.
    5. Elimina la copia originale e non registrata del file della libreria

C’è una differenza in Windows 7. Accesso come amministratore non dà gli stessi diritti di quando si esegue un programma come amministratore.

Vai a Start – Tutti i programmi – Accessori. Fai clic destro sulla finestra di comando e selezionare “Esegui come amministratore” Ora registra la DLL normalmente 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 .

È necessario eseguire cmd.exe in c:\windows\system32\ by administrator

Comandi: per i file * .dll di annullamento della registrazione

regsvr32.exe /u C:\folder\folder\name.dll

Per i file * .dll di registrazione

 regsvr32.exe C:\folder\folder\name.dll 

Parte della confusione riguardante regsvr32 è che nelle windows a 64 bit il nome e il percorso non sono stati modificati, ma ora registra DLL a 64 bit. Il regsvr32 a 32 bit esiste in SysWOW64, un nome che sembra rappresentare 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 ci pensi in questo modo, il nome ha senso anche se è confusionario in questo contesto.

Non riesco a trovare la mia fonte originale su un blog MSDN ma è referenziato in questo articolo di Wikipedia http://en.wikipedia.org/wiki/WoW64

Ecco come ho risolto questo problema su una macchina x64 Win7:

1 – messaggio di errore:

“CoCreateInstance () fallito. Controlla le voci di registro CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} e assicurati di aver effettuato l’accesso come amministratore”

2 – procedura di correzione:

  • Avvia / digita cmd / RightMouseClick su cmd.exe e scegli “Esegui come amministratore”
  • digitato: regsvr32 / s C: \ Programmi \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Programmi \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • riavvia Win 7 e torna di nuovo in attività!

Spero che questo ti aiuti !