zoukankan      html  css  js  c++  java
  • C# 实现设置系统环境变量设置

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

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

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

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

    注册表方式,是要修改注册表的位置是[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

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

    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+";");
                   
                }
    
            }
        }
  • 相关阅读:
    13.2 抽像类与体类(Abstract & Concrete Classes) 简单
    13.3 深度隔离的界面(Deeply Parted interface) 简单
    计算天数(C++)_学习 简单
    13.1.2 纯虚函数(Pure Virutal Functions) 简单
    C++ operator关键字(重载操作符) 简单
    二月一共多少天 简单
    重载运算符操作_学习 简单
    计算两个日期之间的天数(C++) 简单
    1.2 连接信号和响应函数 简单
    用Android手机做台式机无线网卡
  • 原文地址:https://www.cnblogs.com/grj001/p/12223944.html
Copyright © 2011-2022 走看看