Não é possível criar uma variável de ambiente no registro
-
09-06-2019 - |
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.
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.