Pregunta

Tengo un instalador personalizado acción que actualiza el entorno de RUTA, y crea una nueva variable de entorno.Anexar un directorio a la ruta existente variable está trabajando bien, pero por alguna razón mis intentos para crear una nueva variable de entorno han sido infructuosos.El código que estoy usando es:

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

Editar:El sistema operativo es XP de 32 bits, y como lo que yo puedo decir que está fallando en silencio.

¿Fue útil?

Solución

¿Hay alguna razón por la que usted tiene que hacerlo a través del registro?

Si no, usted puede utilizar el Ambiente.SetEnvironmentVariable() desde entonces .NET 2.0.Te permite configurar en un equipo, proceso o usuario.

Otros consejos

Lo que OS es esto?Es que en un sistema de 64 bits?¿Cuál es la naturaleza de la falta:en silencio o es una excepción?

Usted podría tratar de correr ProcessMonitor y a ver si se ve el intento de establecer el valor.

¿Por qué usas un CustomAction para esto?El Instalador de Windows admite la actualización de las variables de entorno de forma nativa.

Resulta que había otro problema que impedía el código en mi pregunta de ser llamado.Sin embargo, yo estaba usando el Win32 asamblea, porque el código de ejemplo que yo era el siguiente fue escrito antes de que el Entorno de la asamblea se hizo disponible.Así que Gracias Pedro por señalar el medio Ambiente de la API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top