O que realmente acontece durante / regserver e / unregserver?

3

Estou instalando um programa em um servidor e desinstalando o programa de um computador separado.

Servidor: Windows Server 2008 R2 Computador: Windows 7 Ultimate

Eu encontrei o instalador e desinstalador no mesmo ponto. Essas duas máquinas estão em um domínio com uma diretiva de grupo que impõe configurações.

Ao instalar o programa, eles param em

"C: \ Lumesnion \ admin \ smc.exe" / regserver

No log de instalação. Eles param em

"C: \ Lumesnion \ admin \ smc" / não registrador

No log de desinstalação.

Esse é um problema com o editor de registro bloqueado? Não consigo obter nenhuma informação sobre por que eles estão presos lá. Eu habilitei a edição do registro no regedit e eles ainda estão travados.

Alguém pode me dizer o que / regserver e / unregserver estão realmente fazendo e como posso corrigi-lo para que o programa seja instalado com êxito?

EDIÇÃO 1: Esqueci de adicionar Eu sou um administrador de domínio e um administrador local na máquina. Estou instalando o programa com "Executar como administrador".

EDIT 2: Instalando o Lumension Device Control.

EDIT 3: Acabei de fazer um teste e iniciei o instalador usando o Process Monitor e ele mostra um "FAST IO DISALLOWED" na pasta em que o smc.exe deve ser instalado. Ainda estou pesquisando e me perguntando se isso tem algo a ver com o problema. Tanto quanto eu entendo, o / regserver é usado para registrar valores DCOM, mas o Fast I / O é o que faz o registro. A menos que eu não tenha entendido corretamente. Estou errado?

Juke-box
fonte
isso registra arquivos ActiveX
magicandre1981 6/17
Postagem original editada. Esqueci de adicionar informações de que sou administrador.
precisa saber é o seguinte
@ Ramhound Estou executando-o em um sistema de diretiva que não é de Grupo e instalado corretamente. Felizmente, tenho apenas quatro diretivas de grupo ativadas, mas elas são muito detalhadas. Achei que isso seria capaz de me apontar na direção certa. Programa chamado smc.exe.
JukEboX
@Ramhound adicionou o programa à postagem. Também procurei uma correção de registro para a instalação, mas a correção foi aplicada e não fez nada para corrigir o problema.
JukEboX
Você diz que o programa é Lumension Device Control., Mas em um comentário, menciona que o instalador está chamando smc.exe, que está conectado ao software da Symantec.
Ramhound

Respostas:

3

Alguém pode me dizer o que / regserver e / unregserver estão realmente fazendo?

Auto-registro:

Além dos problemas de licenciamento, tratados pelo IClassFactory2, um procedimento de instalação normalmente cria as entradas de registro necessárias para que um componente seja executado corretamente no contexto COM e OLE.

Além disso:

A existência desses dados permite que qualquer parte interessada, como um aplicativo que deseje integrar esse novo componente, determine se o servidor oferece suporte ao autorregistro sem precisar carregar a DLL ou o EXE primeiro.

Se o servidor estiver empacotado em um módulo DLL, a DLL deverá exportar as funções DllRegisterServer e DllUnregisterServer. Qualquer aplicativo que deseje instruir o servidor a se registrar (ou seja, todos os seus CLSIDs e IDs da biblioteca de tipos) pode obter um ponteiro para DllRegisterServer através da função GetProcAddress. No DllRegisterServer, a DLL cria todas as entradas necessárias no Registro, armazenando o caminho correto para a DLL para todas as entradas InprocServer32 ou InprocHandler32.

Quando um aplicativo deseja remover o componente do sistema, ele deve cancelar o registro desse componente chamando DllUnregisterServer. Nessa chamada, o servidor remove exatamente as entradas criadas anteriormente no DllRegisterServer. O servidor não deve remover cegamente todas as entradas de suas classes porque outro software pode ter armazenado entradas adicionais, como uma chave TreatAs.

Se o servidor estiver empacotado em um módulo EXE, o aplicativo que deseja registrar o servidor inicia o servidor EXE com o argumento de linha de comando / RegServer ou -RegServer (sem distinção entre maiúsculas e minúsculas). Se o aplicativo desejar cancelar o registro do servidor, ele iniciará o EXE com o argumento de linha de comando / UnregServer ou -UnregServer. O EXE de registro automático detecta esses argumentos da linha de comando e invoca as mesmas operações que uma DLL dentro de DllRegisterServer e DllUnregisterServer, respectivamente, registrando o caminho do módulo em LocalServer32 em vez de InprocServer32 ou InprocHandler32.

"Este é um problema com o editor de registro bloqueado?"

É muito provável que isso tenha a ver com o fato de você não ser um administrador no domínio. No entanto, não é possível responder realmente sem sombra de dúvida, com base nas informações que você nos forneceu.

Alguém pode me dizer o que / regserver e / unregserver estão realmente fazendo?

Simplesmente registra o aplicativo para que ele possa se comunicar com a biblioteca COM

Essas duas máquinas estão em um domínio com uma Diretiva de Grupo que impõe configurações

.....

Ao instalar o programa, eles param em

.....

Como posso corrigi-lo para que o programa seja instalado com êxito?

A correção mais simples é ter um usuário, com direitos de administrador no domínio ativo, para instalar o aplicativo.

Ramhound
fonte
Desculpe esquecer de adicionar que eu sou um administrador de domínio e um administrador local na máquina. Estou instalando o programa com "Executar como administrador". Editando postagem original.
JukEboX
11
Se você estiver instalando-o como administrador e ainda assim não funcionar, você terá uma diretiva de grupo conflitante ativada.
Ramhound
Eu tenho uma política de grupo ativada. Estou tentando descobrir qual configuração pode estar bloqueando. Entendendo esse problema / regserver, imaginei que me apontaria na direção certa.
JukEboX