Tentei usar o seguinte código:
cd c:\windows\system32
regsvr32.exe dllname.ax
Mas isso não está funcionando para mim. Como posso registrar um arquivo DLL no Windows 7 com um processador de 64 bits?
Tentei usar o seguinte código:
cd c:\windows\system32
regsvr32.exe dllname.ax
Mas isso não está funcionando para mim. Como posso registrar um arquivo DLL no Windows 7 com um processador de 64 bits?
Respostas:
Digite regsvr32 name.dll
no Prompt de Comando (executado em modo elevado!) E pressione “Enter”. Observe que name.dll
deve ser substituído pelo nome da DLL que você deseja registrar. Por exemplo, se você deseja registrar o iexplore.dll, digite regsvr32 iexplore.dll
.
regsvr32
caminho do arquivo .dll com nome de arquivo e extensão e pressione Enter
Bem, você não especifica se é uma dll de 32 ou 64 bits e não inclui a mensagem de erro, mas suponho que é o mesmo problema descrito neste artigo da KB: Mensagem de erro ao executar o Regsvr32.exe no Windows de 64 bits
Citação desse artigo:
Esse comportamento ocorre porque o arquivo Regsvr32.exe na pasta System32 é uma versão de 64 bits. Quando você executa o Regsvr32 para registrar uma DLL, está usando a versão de 64 bits por padrão.
Solução desse artigo:
Para resolver esse problema, execute o Regsvr32.exe da pasta% SystemRoot% \ Syswow64. Por exemplo, digite os seguintes comandos para registrar a DLL:
cd \windows\syswow64
regsvr32 c:\filename.dll
Se a DLL for de 32 bits:
Copie a DLL para C: \ Windows \ SysWoW64 \
Em um prompt de comando elevado :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
se a DLL for 64 bits:
Copie a DLL para C: \ Windows \ System32 \
Em um prompt de comando elevado :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Eu sei que parece o caminho errado, mas é assim que funciona. Vejo:
http://support.microsoft.com/kb/249873
Citação: "Nota Em uma versão de 64 bits de um sistema operacional Windows, existem duas versões do arquivo Regsv32.exe:
A versão de 64 bits é% systemroot% \ System32 \ regsvr32.exe.
A versão de 32 bits é% systemroot% \ SysWoW64 \ regsvr32.exe.
"
Em um sistema x64, system32 é para 64 bits e syswow64 é para 32 bits (não o contrário, conforme declarado em outra resposta). WOW (Windows no Windows) é o subsistema de 32 bits executado no subsistema de 64 bits).
É uma bagunça em termos de nomenclatura e serve apenas para confundir, mas é assim que as coisas são.
Novamente ...
syswow64 é de 32 bits, NÃO 64 bits.
system32 é de 64 bits, NÃO 32 bits.
Há um regsrv32 em cada um desses diretórios. Um é de 64 bits e o outro de 32 bits. É a mesma coisa com odbcad32 e et al. (Se você quiser ver drivers ODBC de 32 bits que não aparecerão com o odbcad32 padrão no system32, que é de 64 bits.)
regsvr32
cuidará dos detalhes, teoricamente detectará se você está registrando uma DLL de 32 ou 64 bits: stackoverflow.com/questions/18935163/…
Abra o menu iniciar e digite cmd na caixa de pesquisa Segure Ctrl + Shift e pressione Enter
Isso executa o Prompt de Comando no modo Administrador.
Agora digite: regsvr32 MyComobject.dll
Finalmente encontrei a solução, basta executar o CMD como administrador e escrever
cd \windows\syswow64
então escreva isso
regsvr32 c:\filename.dll
Espero que essa resposta te ajude
Se a DLL for de 32 bits:
se a DLL for de 64 bits:
Tudo aqui estava falhando no caminho errado. Então me lembrei de um truque dos velhos tempos do Win95. Abra a pasta do programa onde reside o .dll, abra C: / Windows / System32, role para baixo até regsvr32 e arraste e solte a dll da pasta do programa para rgsrver32. Boom, pronto.
Saber a mensagem de erro seria bastante valioso. Destina-se a fornecer informações, embora não faça sentido para você, faz para nós. Sendo forçado a adivinhar, eu diria que a DLL é um filtro DirectX de 32 bits. Nesse caso, este deve ser o curso de ação adequado:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Isso deve ser executado em um prompt de comando elevado para que o UAC não possa interromper o acesso ao registro necessário. Faça mais perguntas sobre isso em superuser.com
Acabei de testar este método extremamente simples e ele funciona perfeitamente - mas eu uso a conta de Administrador embutida, então não tenho que pular para privilégios elevados.
O arquivo em lote a seguir dispensa o usuário da necessidade de mover arquivos para dentro / fora das pastas do sistema. Também deixa que o Windows aplique a versão adequada do Regsvr32
.
INSTRUÇÕES:
Na pasta que contém o arquivo de biblioteca ( -.dll
ou -.ax
) que deseja registrar, abra um novo arquivo de texto e cole em UMA das rotinas abaixo:
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
Salve seu novo arquivo de texto como um arquivo batch ( -.bat
); em seguida, basta arrastar e soltar seu arquivo -.dll
ou -.ax
na parte superior do arquivo em lote.
Se o UAC não oferecer a oportunidade de executar o arquivo em lote como administrador, pode ser necessário elevar manualmente os privilégios (as instruções são para o Windows 7):
Create shortcut
;Properties
;Compatibility
guia;Run this program as administrator
;-.dll
ou -.ax
sobre o novo atalho em vez do arquivo em lote.É isso aí . Eu escolhi COPY
em vez de MOVE
para evitar o fracasso de qualquer tentativa de acompanhamento UAC relacionada (s). O registro bem-sucedido deve ser seguido pela exclusão do arquivo original da biblioteca ( -.dll
ou -.ax
).
Não se preocupe com as cópias feitas na pasta do sistema ( C:\Windows\System32
ou C:\Windows\SysWOW64
) por passagens anteriores - elas serão sobrescritas toda vez que você executar o arquivo em lote.
A menos que você tenha executado o arquivo em lote errado , nesse caso você provavelmente desejará excluir a cópia feita para a pasta de sistema errada ( C:\Windows\System32
ou C:\Windows\SysWOW64
) antes de executar o arquivo em lote adequado, ... ou ...
Ajude o Windows a escolher o arquivo de biblioteca certo a ser registrado, qualificando totalmente sua localização de diretório.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
do caminho da pasta do sistemaExecute este arquivo de lote shotgun, que irá (em ordem):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
fica esmaecido quando criei um atalho para o arquivo bat. Estou logado como administrador. Além disso, é %nx1
ou %n1
?
Há uma diferença no Windows 7. Fazer logon como administrador não concede os mesmos direitos de quando executar um programa como Administrador.
Vá para Iniciar - Todos os programas - Acessórios. Clique com o botão direito na janela Comando e selecione "Executar como administrador" Agora registre a dll normalmente via: regsrvr32 xxx.dll
E ao fazer isso, se você obtiver o código de erro 0x80040201, tente a solução em DllRegisterServer falhou com o código de erro 0x80040201 , mas certifique-se de abrir o prompt de comando como Executar como Administrador .
Parte da confusão em relação ao regsvr32 é que em janelas de 64 bits o nome e o caminho não mudaram, mas agora ele registra DLLs de 64 bits. O regsvr32 de 32 bits existe em SysWOW64, um nome que parece representar aplicativos de 64 bits. No entanto, o WOW64 no nome se refere ao Windows no Windows 64 ou mais explicitamente ao Windows de 32 bits no Windows de 64 bits. Quando você pensa dessa forma, o nome faz sentido, embora seja confuso neste contexto.
Não consigo encontrar minha fonte original em um blog do MSDN, mas ela é referenciada neste artigo da Wikipedia http://en.wikipedia.org/wiki/WoW64
Aqui está como eu corrigi esse problema em uma máquina Win7 x64:
"CoCreateInstance () falhou por favor, verifique suas entradas de registro CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} e certifique-se de que você está conectado como um administrador"
Espero que isto ajude !
regsvr32
, uma DLL deve exportar as funçõesDllRegisterServer
eDllUnregisterServer
. Não há registro para a grande maioria das DLLs que você cria.