我是靠谱客的博主 温婉西牛,最近开发中收集的这篇文章主要介绍C# 实现设置系统环境变量设置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C# 实现设置系统环境变量设置

原文:C# 实现设置系统环境变量设置

 

以前实现系统环境变量设置时是要在电脑属性--高级--环境变量设置,实现方式主要有2种,

  1. 修改注册表,添加环境变量
  2. 调用系统Kernel32.DLL函数,设置环境变量

 

 

注册表方式,是要修改注册表的位置是[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment]

代码我已经封装,注意要引入命名空间

using Microsoft.Win32;
using System.Runtime.InteropServices;

如下:

class SysEnvironment
{
    /// <summary>
    /// 获取系统环境变量
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    public static string GetSysEnvironmentByName(string name)
    {
        string result = string.Empty;
        try
        {
            result = OpenSysEnvironment().GetValue(name).ToString();//读取
        }
        catch (Exception)
        {

            return string.Empty;
        }
        return result;

    }

    /// <summary>
    /// 打开系统环境变量注册表
    /// </summary>
    /// <returns>RegistryKey</returns>
    private static RegistryKey OpenSysEnvironment()
    {
        RegistryKey regLocalMachine = Registry.LocalMachine;
        RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEM 
        RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001 
        RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开Control 
        RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control 

        RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);
        return regEnvironment;
    }

    /// <summary>
    /// 设置系统环境变量
    /// </summary>
    /// <param name="name">变量名</param>
    /// <param name="strValue">值</param>
    public static void SetSysEnvironment(string name, string strValue)
    {
        OpenSysEnvironment().SetValue(name, strValue);

    }

    /// <summary>
    /// 检测系统环境变量是否存在
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    public bool CheckSysEnvironmentExist(string name)
    {
        if (!string.IsNullOrEmpty(GetSysEnvironmentByName(name)))
            return true;
        else
            return false;
    }

    /// <summary>
    /// 添加到PATH环境变量(会检测路径是否存在,存在就不重复)
    /// </summary>
    /// <param name="strPath"></param>
    public static void SetPathAfter(string strHome)
    {
        string pathlist ;
        pathlist = GetSysEnvironmentByName("PATH");
        //检测是否以;结尾
        if (pathlist.Substring(pathlist.Length - 1, 1) != ";")
        {
            SetSysEnvironment("PATH", pathlist + ";");
            pathlist = GetSysEnvironmentByName("PATH");
        }
        string[] list = pathlist.Split(';');
        bool isPathExist = false;

        foreach (string item in list)
        {
            if (item == strHome)
                isPathExist = true;
        }
        if (!isPathExist)
        {
            SetSysEnvironment("PATH", pathlist +strHome+ ";");
        }

    }

    public static void SetPathBefore(string strHome)
    {

        string pathlist;
        pathlist = GetSysEnvironmentByName("PATH");
                    string[] list = pathlist.Split(';');
        bool isPathExist = false;

        foreach (string item in list)
        {
            if (item == strHome)
                isPathExist = true;
        }
        if (!isPathExist)
        {
            SetSysEnvironment("PATH", strHome + ";" + pathlist);
        }

    }

    public static void SetPath(string strHome)
    {

        string pathlist;
        pathlist = GetSysEnvironmentByName("PATH");
        string[] list = pathlist.Split(';');
        bool isPathExist = false;

        foreach (string item in list)
        {
            if (item == strHome)
                isPathExist = true;
        }
        if (!isPathExist)
        {
            SetSysEnvironment("PATH", pathlist + strHome + ";" );
       
        }

    }


}

 

 

Kernel32.DLL内有SetEnvironmentVariable函数用于设置系统环境变量

C#调用要用DllImport,代码封装如下:

class SetSysEnvironmentVariable
    {
        [DllImport("Kernel32.DLL ", SetLastError = true)]
        public static extern bool SetEnvironmentVariable(string lpName, string lpValue);

        public static void SetPath(string pathValue)
        {
            string pathlist;
            pathlist = SysEnvironment.GetSysEnvironmentByName("PATH");
            string[] list = pathlist.Split(';');
            bool isPathExist = false;

            foreach (string item in list)
            {
                if (item == pathValue)
                    isPathExist = true;
            }
            if (!isPathExist)
            {
                SetEnvironmentVariable("PATH", pathlist + pathValue+";");
               
            }

        }
    }

最后

以上就是温婉西牛为你收集整理的C# 实现设置系统环境变量设置的全部内容,希望文章能够帮你解决C# 实现设置系统环境变量设置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部