Registro de aplicativo por máquina

Estou construindo um instalador com o WiX para instalar um programa, por máquina (não por usuário), e isso oferece a opção de registrar o programa. O registro envolve a inserção do nome do usuário e da organização (ou a aceitação de alguns padrões das configurações do Windows) e a inserção de uma chave de registro válida. Quando a chave de registro é validada, escrevo as configurações do registro na área HKEY_LOCAL_MACHINE com essas informações. No Windows, quando alguém executa o MSI, solicita automaticamente uma senha de administrador para poder definir valores do Registro em HKEY_LOCAL_MACHINE. Até agora a vida é boa ...

Estou incluindo uma opção no MSI para dar ao usuário a opção de adiar o registro até um momento posterior. No entanto, se o usuário for um usuário normal e ele estiver executando o aplicativo, se eu tiver uma caixa de diálogo no aplicativo solicitando o nome / org / chave do produto, o Windows não aplicará o aplicativo para gravar as informações em HKEY_LOCAL_MACHINE. Portanto, um usuário não pode usar o próprio aplicativo, executando como usuário normal, para executar um registro por máquina, como o MSI faz depois de solicitar credenciais de administrador.

Meu pensamento foi, então, para o registro pós-instalação, (a) encontrar uma maneira dentro do aplicativo para elevar privilégios, com um prompt para credenciais de administrador, permitindo que ele escreva HEKY_LOCAL_MACHINE (isso é possível?), (B) inclua uma opção no instalador que, quando executada e o aplicativo já está instalado e não está registrado, percorre o registro como faria durante uma instalação normal. Em seguida, solicitaria as credenciais de administrador e a vida será boa novamente. Como alternativa, (c) crie um MSI separado que apenas faça o registro, instale-o no programa e chame-o de MSI a partir do programa quando o usuário selecionar o comando "Registrar ..." no programa.

Eu nunca vi nenhuma dessas abordagens feitas por nenhum aplicativo antes, então não tenho certeza de que seja uma boa abordagem. Fora isso, no entanto, não tenho certeza de como, após a instalação, posso convenientemente permitir que o usuário faça um registro de aplicativo por máquina. Idealmente, eu gostaria de fazê-lo a partir de um comando no aplicativo, mas a nova execução da instalação MSI seria minimamente aceitável.

Como isso é feito normalmente? Ou as instalações por máquina são normalmente acompanhadas de registros por máquina?

questionAnswers(2)

yourAnswerToTheQuestion