Variable de entorno C # set

Tengo problemas para configurar las variables de entorno con C #.

Necesito modificar algunas variables de entorno en algunas circunstancias. Por ejemplo, necesito modificar la variable NDSRC.

Yo suelo:

Environment.SetEnvironmentVariable("MY_VARIABLE", "value", EnvironmentVariableTarget.Machine); 

Esto funciona bien

A continuación, ejecuto un script que utiliza la variable. Y ahora hay un problema, porque el script no ve la variable.

Ejemplo: establecer la variable Path (agregar un directorio al final) usando

 string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine) + ";c:\\"; Environment.SetEnvironmentVariable("Path", path, EnvironmentVariableTarget.Machine); 

Abra la línea de comandos de Windows (Inicio-> ejecutar-> cmd.exe).

En la línea de comandos, escriba cmd

El sistema no puede encontrar cmd.exe: ‘cmd’ no se reconoce como un comando interno o externo, progtwig operable o archivo por lotes.

Si revisa la configuración de Windows -> Variables de entorno, la ruta se establece correctamente en el nuevo valor. Si marca en el símbolo del sistema abierto, también está configurado.

Lamentablemente, debe reiniciar su proceso para poder actualizar las variables de entorno. Ver esta publicación de MSDN .

Es por diseño que las variables se heredan cuando se inicia el proceso y permanecen fijas después de eso.

Sin embargo, no hay ninguna razón por la cual no pueda simplemente ingresar periódicamente las claves de registro relevantes y actualizar manualmente las variables de entorno de su proceso. De hecho, esto es lo correcto si buscas valores actualizados.

Básicamente, el registro almacena una plantilla para variables de entorno, y eso es lo que edita a través de “Configuración de Windows -> Variables de entorno”. Cuando haces eso, Windows transmite un mensaje a todas las partes interesadas. Cualquiera de esas partes puede volver a crear su copia de las variables de entorno del registro.

Sin embargo, no conozco ninguna función preconfigurada a la que pueda llamar para realizar esta recreación, por lo que probablemente deba escribir la suya propia.