.NET设置和读取环境变量示例

在Windows操作系统中,环境变量分为三种:应用程序环境变量、用户环境变量和系统环境变量,三者作用域、保存位置是不同的,.NET中提供了对应的方法进行设置和读取。

三种环境变量的区别

1.作用域:
应用程序环境变量:当前应用程序进程内有效;
用户环境变量:对当前系统登录用户有效;
系统环境变量:系统内所有用户有效;

2.生效时间:
应用程序环境变量:设置后在应用程序中直接生效;
用户环境变量:重启应用程序生效;
系统环境变量:重启应用程序生效;

3.保存位置:
应用程序环境变量:内存;
用户环境变量:HKEY_CURRENT_USER\Environment;
系统环境变量:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment;

.NET设置和读取环境变量示例

using System;
using System.Diagnostics;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //0.文件准备
            string path1 = @"E:\test1", filename1 = "test1.bat";
            string path2 = @"E:\test2", filename2 = "test2.bat";
            string path3 = @"E:\test3", filename3 = "test3.bat";
            Directory.CreateDirectory(path1);
            Directory.CreateDirectory(path2);
            Directory.CreateDirectory(path3);
            File.WriteAllText(path1 + @"\" + filename1, "@echo off\r\necho test1\r\npause");
            File.WriteAllText(path2 + @"\" + filename2, "@echo off\r\necho test2\r\npause");
            File.WriteAllText(path3 + @"\" + filename3, "@echo off\r\necho test3\r\npause");

            //1.应用程序环境变量,马上生效
            EnvironmentVariableTarget target1 = EnvironmentVariableTarget.Process;
            Environment.SetEnvironmentVariable("Path", Environment.GetEnvironmentVariable("Path", target1) + ";" + path1, target1);
            try { Process.Start(filename1, ""); }
            catch (Exception ex) { Console.WriteLine(ex.Message); }

            //2.用户环境变量,程序重启后生效
            EnvironmentVariableTarget target2 = EnvironmentVariableTarget.User;
            Environment.SetEnvironmentVariable("Path", Environment.GetEnvironmentVariable("Path", target2) + ";" + path2, target2);
            try { Process.Start(filename2, ""); }
            catch (Exception ex) { Console.WriteLine(ex.Message); }

            //3.系统环境变量,程序重启后生效
            EnvironmentVariableTarget target3 = EnvironmentVariableTarget.Machine;
            Environment.SetEnvironmentVariable("Path", Environment.GetEnvironmentVariable("Path", target3) + ";" + path3, target3);
            try { Process.Start(filename3, ""); }
            catch (Exception ex) { Console.WriteLine(ex.Message); }

            Console.ReadKey();
        }
    }
}


评论: 0 | 引用: 0 | 查看次数: 5019
发表评论
登录后再发表评论!