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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.