Pergunta

Tenho uma ação de instalador personalizada que atualiza o ambiente PATH e cria uma variável de ambiente adicional.Anexar um diretório à variável de caminho existente está funcionando bem, mas por algum motivo minhas tentativas de criar uma nova variável de ambiente não tiveram êxito.O código que estou usando é:

        using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
        {
            reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
        }

Editar:O sistema operacional é XP de 32 bits e, pelo que sei, está falhando silenciosamente.

Foi útil?

Solução

Existe algum motivo para você fazer isso por meio do registro?

Caso contrário, você pode usar Environment.SetEnvironmentVariable() desde o .NET 2.0.Ele permite que você defina por máquina, processo ou usuário.

Outras dicas

Que sistema operacional é esse?Está em um sistema de 64 bits?Qual é a natureza da falha:silencioso ou uma exceção é lançada?

Você poderia tentar correr Monitor de Processo e vendo se vê a tentativa de definir o valor.

Por que você está usando um CustomAction para isso?O Windows Installer oferece suporte nativo à atualização de variáveis ​​de ambiente.

Acontece que havia outro problema que impedia que o código da minha pergunta fosse chamado.No entanto, eu estava usando o assembly Win32 porque o código de exemplo que estava seguindo foi escrito antes do assembly Environment ficar disponível.Então, obrigado Peter por apontar a API de ambiente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top