Além da resposta correta do @Matthew Wetmore, a coisa normal que acontece é que ele registra todos os componentes COM nessa dll.
Especificamente, ele cria duas chaves (+ subchaves) no registro do Windows.
Por exemplo considere uma dll: dao360.dll
, que possui vários objetos COM dentro dela. Para cada uma, a primeira chave é algo como:
HKLM\SOFTWARE\Classes\DAO.TableDef.36
para o objeto DAO Table Defintion, o nome da chave é o ProgID do objeto COM ao qual os programadores se refeririam em seu código.
Sob a chave é geralmente uma única chave com um valor padrão:
HKLM\SOFTWARE\Classes\DAO.TableDef.36\CLSID
neste caso:
{00000103-0000-0010-8000-00AA006D2EA4}
este é o ID de Classe ou CLSID para o objeto COM, nos informa onde a segunda chave está localizada:
HKLM\SOFTWARE\Classes\CLSID{00000103-0000-0010-8000-00AA006D2EA4}
Essa chave com suas subchaves e valores possui informações adicionais sobre o objeto COM.
Um valor a ser observado é o valor padrão em:
HKLM\SOFTWARE\Classes\Wow6432Node\CLSID{00000103-0000-0010-8000-00AA006D2EA4}\InprocServer32
tem o caminho do arquivo exe / dll que hospeda o objeto COM, no nosso exemplo:
%CommonProgramFiles%\Microsoft Shared\DAO\dao360.dll
Este é o caminho de arquivo correto quando regsvr32.exe foi usado para registrar esse objeto COM. Se você mover o arquivo manualmente, o objeto COM não funcionará mais porque esse valor do registro agora referencia um arquivo ausente.
Portanto, antes de usar o regsvr32.exe em uma DLL, mova-o para o local final e não mova a DLL após registrá-la.