-
2014-11-18 11:47:22
以前实现系统环境变量设置时是要在电脑属性--高级--环境变量设置,实现方式主要有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+";"); } } }
更多相关内容 -
系统环境变量设置(环境变量进不去怎么办,破!)
2019-01-16 10:07:36问题一:如何进入系统设置(设置环境变量): 法1:右键我的电脑->属性 法2:控制面板->系统和安全->系统->高级系统设置 若是右键我的电脑,没有属性怎么办?高级系统设置也...问题一:如何进入系统设置(设置环境变量):
法1:右键我的电脑->属性
法2:控制面板->系统和安全->系统->高级系统设置若是右键我的电脑,没有属性怎么办?高级系统设置也点击进入不了怎么办。那就可能是电脑设置不能改变环境了!
方法:
链接:https://pan.baidu.com/s/1TRuQevSPn27y51o1UJm0Rw
提取码:hm35里面有两个文件,先点击hack.reg
点击下面的.bat文件,就ok啦 -
VS_ 系统环境变量设置
2016-08-26 23:49:46然而在开发过程中,难免要使用到第三方库,比如boost,Qt,curl等等,如果每个项目都分别去设置的话,很麻烦而且容易导致混乱,所以,通过设置环境变量PATH,INCLUDE,LIB,LIBPATH等,可以很方便地设置。...在windows开发,最多被使用的还是Visual Studio,至于哪个版本各个项目不同。然而在开发过程中,难免要使用到第三方库,比如boost,Qt,curl等等,如果每个项目都分别去设置的话,很麻烦而且容易导致混乱,所以,通过设置环境变量PATH,INCLUDE,LIB,LIBPATH等,可以很方便地设置。
注意:
1.对于相同的值,比如用户变量和系统变量都有一个INCLUDE,则用户变量会覆盖系统变量,导致系统变量的路径搜不到,这个需要注意。
2.还有一个问题,比如,不同项目使用的库是不同版本地,如果写在同一个变量里面会被覆盖掉,则,可以为每个版本分别设置一个环境变量。
参考文章:
-
win10下系统环境变量设置成功后,使用无效
2017-04-18 07:44:50win10下成功设置环境变量后,DOS窗口下查看PATH路径设置没有问题,但就是不识别,无法使用可执行文件,显示既不是内部命令也不是外部命令,求大神解救 -
CentOS7 设置系统环境变量 (系统语言等)
2021-01-21 17:19:21系统环境变量:公共的,对全部的用户都生效。 用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。 2)按生存周期分类。 永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些...一、环境变量的概念
1、环境变量的含义
程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。
2、环境变量的分类
1)按生效的范围分类。
系统环境变量:公共的,对全部的用户都生效。
用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。
2)按生存周期分类。
永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。
临时环境变量:使用时在Shell中临时定义,退出Shell后失效。
3、Linux环境变量
Linux环境变量也称之为Shell环境量变,以下划线和字母打头,由下划线、字母(区分大小写)和数字组成,习惯上使用大写字母,例如PATH、HOSTNAME、LANG等。
二、常用的环境变量
1、查看环境变量
1)env命令
在Shell下,用env命令查看当前用户全部的环境变量。
上图只截取了部分环境变量,并非全部。
用env命令的时候,满屏显示了很多环境变量,不方便查看,可以用grep筛选。
env|grep 环境变量名
例如查看环境变量名中包含PATH的环境变量。
env|grep PATH
2)echo命令
echo $环境变量名
注意,符号$不能缺少,这是语法规定。
2、常用的环境变量
1)PATH
可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序,PATH变量的具体用法本文后面的章节中有详细的介绍。
2)LANG
Linux系统的语言、地区、字符集,LANG变量的具体用法本文后面的章节中有详细的介绍。
3)HOSTNAME
服务器的主机名。
4)SHELL
用户当前使用的Shell解析器。
5)HISTSIZE
保存历史命令的数目。
6)USER
当前登录用户的用户名。
7)HOME
当前登录用户的主目录。
8)PWD
当前工作目录。
9)LD_LIBRARY_PATH
C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。
10)CLASSPATH
JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。
三、设置环境量
变量名='值' export 变量名
或
export 变量名='值'
如果环境变量的值没有空格等特殊符号,可以不用单引号包含。
示例:
export ORACLE_HOME=/oracle/home export ORACLE_BASE=/oracle/base export ORACLE_SID=snorcl11g export NLS_LANG='Simplified Chinese_China.ZHS16GBK' export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:.
采用export设置的环境变量,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在登录脚本文件中配置。
1、系统环境变量
系统环境变量对全部的用户生效,设置系统环境变量有三种方法。
1)在/etc/profile文件中设置。
用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环境变量。
2)在/etc/profile.d目录中增加环境变量脚本文件,这是Linux推荐的方法。
/etc/profile在每次启动时会执行/etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d下对应的 shell 脚本即可。
/etc/profile.d目录下有很多脚本文件,例如:
在以上示例中,/etc/profile.d目录中的oracle.sh是Oracle数据库的环境变量配置文件,内容如下:
3)在/etc/bashrc文件中设置环境变量。
该文件配置的环境变量将会影响全部用户使用的bash shell。但是,Linux也不建议在 /etc/bashrc 文件中设置系统环境变量。
2、用户环境变量
用户环境变量只对当前用户生效,设置用户环境变量也有多种方法。
在用户的主目录,有几个特别的文件,用
ls
是看不见的,用ls .bash_*
可以看见。1).bash_profile(推荐首选)
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己的环境变量。
2).bashrc
当用户登录时以及每次打开新的Shell时该文件都将被读取,不推荐在里面配置用户专用的环境变量,因为每开一个Shell,该文件都会被读取一次,效率肯定受影响。
3).bash_logout
当每次退出系统(退出bash shell)时执行该文件。
4).bash_history
保存了当前用户使用过的历史命令。
3、环境变量脚本文件的执行顺序
环境变量脚本文件的执行顺序如下:
/etc/profile->/etc/profile.d->/etc/bashrc->用户的.bash_profile->用户的.bashrc
同名的环境变量,如果在多个脚本中有配置,以最后执行的脚本中的配置为准。
还有一个问题需要注意,在/etc/profile中执行了/etc/profile.d的脚本,代码如下:
for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ "${-#*i}" != "$-" ]; then . "$i" else . "$i" >/dev/null fi fi done
所以,/etc/profile.d和/etc/profile的执行顺序还要看代码怎么写。
四、重要环境变量的详解
1、PATH环境变量
可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录。
1)PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。
export PATH=目录1:目录2:目录3:......目录n:.
2)PATH缺省包含了Linux系统命令所在的目录(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。
示例:
3)在用户的.bash_profile文件中,会对PATH进行扩充,如下:
export PATH=$PATH:$HOME/bin
4)如果PATH变量中没有包含圆点.,执行当前目录下的程序需要加./或使用绝对路径。
示例:
2、LANG环境变量
LANG环境变量存放的是Linux系统的语言、地区、字符集,它不需要系统管理员手工设置,/etc/profile会调用/etc/profile.d/lang.sh脚本完成对PATH的设置。
CentOS6.x 字符集配置文件在/etc/syscconfig/i18n文件中。
CentOS7.x 字符集配置文件在/etc/locale.conf文件中,内容如下:
设置英语: LANG=en_US.utf8
3、LD_LIBRARY_PATH环境变量
C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。
LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。
export LD_LIBRARY_PATH=目录1:目录2:目录3:......目录n:.
4、CLASSPATH
JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要。
CLASSPATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。
五、环境变量的生效
1)在Shell下,用export设置的环境变量对当前Shell立即生效,Shell退出后失效。
2)在脚本文件中设置的环境变量不会立即生效,退出Shell后重新登录时才生效,或者用source命令让它立即生效,例如:
source /etc/profile
六、应用经验
虽然设置环境变量的方法有多种,但是建议系统环境变量建议在 /etc/profile.d 目录中配置,用户环境变量在用户的 .bash_profile 中配置,不建议在其它脚本文件中配置环境变,会增加运维的麻烦,容易出错。
-
设置环境变量的两种方法
2021-05-18 14:53:07在弹出来的界面里在系统变量里点击新建, 注意:用户变量只对当前用户有效,系统变量对所有用户有效 填好变量名,变量名可以是随便取的,但建议以你要设置环境变量的应用名为变量名,之后将你要设置环境变量的路径... -
webpack设置环境变量
2021-09-02 18:23:01cross-env可以抹平操作系统差异,设置的环境变量可以在webpack.config.js中使用 安装 yarn add cross-env -D 使用 :package.json "scripts": { //为开发环境注入NODE_ENV "dev": "cross-env NODE_ENV=develop ... -
【环境变量设置】Windows环境变量设置
2022-02-11 13:50:52啊没错是写anaconda的时候顺便着写的2333 以win10系统为例,打开“此电脑”的属性。 在属性中,下拉找到“高级系统设置”。 选择环境变量 找到系统变量中的Path,双击打开即可修改了。 -
jdk在mac系统环境变量设置
2016-08-03 19:47:10发现有很多人在问,下载了Oracle的jdk后,环境变量不知道如何设置,所以今天开了篇文章,专门讲jdk在mac系统中如何设置环境变量的。 idk在mac系统中,其实有两个路径,一个是默认的,一个是下载了的jdk,需要更新... -
快速用cmd打开环境变量设置页面
2020-10-03 00:14:27因为有时候经常要设置,每次都要打开我的电脑,然后右键 习惯用键盘操作的我们肯定想要用代码操作 win+r 输入 sysdm.cpl -
R环境变量设置
2019-01-10 14:20:17R_HOME地址是定义在启动文件/usr/bin/R中的,因此不同于一般的环境变量设置(通过在profile文件内设置export R_HOME= ...,这是没有用的),要修改R_HOME只能在这些初始化文件内修改(下文中列举)。一个R session... -
win11 设置系统环境变量
2021-11-19 10:17:59由于win11的设置面板大变样,一时之间找不到高级设置进入系统环境变量的设置。面对这个问题可以这样:1.按win键--》在搜索中输入 "编辑系统环境变量" 如图: -
Java环境变量配置
2022-01-15 19:47:091. JDK的下载与安装 首先,百度直接搜索JDK,...接下来别忘记选择接受协议,然后打开系统设置面板检查所用电脑的系统位数。(64位 or 32位) 百度网盘地址:链接:https://pan.baidu.com/s/1_fQF2MtlDQRfspMnmsR6h -
Windows 10 系统设置系统环境变量和用户环境变量
2016-07-31 11:06:52系统环境变量对整个系统有效 用户环境变量只对当前用户有效 方法一: 1、首先选中桌面此电脑图标,右键选择属性。如果桌面没有此电脑图标,打开方式http://blog.csdn.net/qq_29129289/article/details/51477364... -
php-mac系统 环境变量设置
2017-02-21 17:42:55php-mac环境变量设置 sudo vi ~/.bash_profile # 添加一行。注意 PHP5.4.10 修改成你正在运行的 PHP 版本目录名称 export PATH="/Applications/MAMP/bin/php/php5.4.10/bin:$PATH" # 保存,退出 # 运行一下 .... -
VS配置属性中如何使用系统环境变量
2015-03-17 10:16:54我想把这些相同的部分定义成系统环境变量,然后类似于批处理使用环境变量一样,比如 %QT_UIC_EXE%,在VS属性使用这些环境变量。 但从结果来看,VS配置使用环境变量是无效的(%QT_UIC_EXE%不起作用)。 -
JDK环境变量配置
2021-07-20 15:18:45win10 右键 此电脑 属性,在相关设置中打开 高级系统设置,弹出 系统属性 界面。 或者直接搜索 环境变量。 1)在系统变量中,新建系统变量JAVA_HOME,变量值为C:\Program Files\Java\jdk1.8.0_241(根据自己... -
win10系统设置环境变量的命令行快捷键
2019-10-31 16:21:00win10系统设置环境变量可以实现jdk的安装、maven的安装、tomcat的安装等必要过程。 -
配置系统环境变量的两种方法
2017-04-24 08:49:08系统环境变量的作用: 当要求系统运行一个程序而没有告诉该程序的完整路径时,系统除在当前路径下寻找外,还会在PATH(系统环境变量)指定目录下寻找。 这里举Android的adt安装所需环境变量设置的例子来说明设置... -
Windows配置系统环境变量后无效
2019-06-01 09:47:44配置完系统环境变量后需要将cmd重启 -
Unity 环境变量设置
2021-11-08 11:21:18 -
Docker之docker设置系统的环境变量
2019-04-16 11:07:24第一种设置环境变量方式 ENV <key><value> ENV CONFIG /usr/local/config 编写Dockerfile的时候使用,推荐使用这种方式 第二种设置环境变量方式 docker run --env ZHICALL_CONFIG=/usr/local/ -d -p ... -
Linux系统安装jdk及环境变量配置
2019-07-29 14:41:55配置环境变量 将如下内容加入 /etc/profile文件中 export JAVA_HOME=/opt/java/jdk1.8.0_221 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib 6.重新加载配置文件 ... -
Windows 10 环境变量 (用户变量与系统变量)
2020-05-03 17:08:00Windows 10 环境变量 (用户变量与系统变量) 1. 环境变量 (environment variables) 环境变量 (environment variables) 是在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字的... -
Windows 11 操作系统如何设置环境变量
2022-01-16 21:08:581.打开我的电脑右键属性进入设置中心 2.搜索框中输入 “环境变量” 回车搜索,点击 “编辑系统环境变量” 3.至此就可以按照自己的需求设置相关编程软件的环境变量了 -
python环境变量设置
2020-12-11 11:12:58python环境变量设置1. 首先需要在系统中注册python环境变量:假设python的安装路径为c:\python2.6,则修改我的电脑-》属性-》高级-》环境变量-》系统变量中的PATH为:(为了在命令行模式下运行Python命令,需要将... -
Android获取和设置系统环境变量指南
2020-06-13 16:45:38Android获取和设置系统环境变量 前言 在Android源码的分析过程中经常会看到System.getenv(“xxx”)和getenv(“xxx”)以及Os.getenv(“xxx”)获取Android系统的环境变量值,本篇的重点不是分析代码... -
java获取和设置系统变量(环境变量)
2019-10-22 17:16:11一、Java获取环境变量 Java 获取环境变量的方式很简单: System.getEnv()得到所有的环境变量 System.getEnv(key) 得到某个环境变量 Map map = System.getenv(); Iterator it = map.entrySet().iterator(); ... -
Pycharm的环境变量设置
2021-11-23 17:08:31Pycharm的环境变量设置 最开始是由于在系统终端上安装mujoco_py遇到了需要添加环境变量的问题,在添加完系统环境变量后,在终端可以使用mujoco_py,而在手动打开的Pycharm窗口中却仍需配置环境变量,查阅资料后发现...