Windows环境变量编程设定

原创 2004年07月28日 11:30:00

Windows环境变量编程设定

 

本文由浅入深的讲解环境变量的定义、使用。对Win98WinMeNTXPWin2003的不同系统下的应用进行了全面的分析。并以编程方式实现设置Windows环境变量。这对于一般程序编制和软件安装程序编制都有重要的意义。

 

什么是用户环境变量、什么是系统环境变量:

环境变量的定义(参考msdn):环境变量是一个string组成的array。它是计算机的一系列设置(setting,环境变量用以指定文件的搜索路径、临时文件目录、特定应用程序(application-specific)的选项和其他类似信息。默认情况下,每个进程(process)的环境变量拷贝自父进程。当然父进程也能够为子进程指定不同的环境变量。

环境变量控制着多种程序的行为。例如,TEMP 环境变量指定程序放置临时文件的位置。任何用户都可以添加、修改或删除用户的环境变量。但是,只有管理员才能添加、修改或删除系统环境变量。使用控制面板中的系统可以自定义下列变量:(1)用于 登陆用户名(logged_on_user_name 的用户环境变量;对于特定计算机的每个用户来说,用户环境变量是不同的。变量包括由用户设置的任何内容,以及由应用程序定义的所有变量,例如应用程序文件的路径。(2)系统环境变量 ;管理员可以更改或添加应用到系统(从而应用到系统中的所有用户)的环境变量。安装期间,Windows安装程序配置默认的系统变量,例如 Windows 文件的路径。

用户环境变量的作用、系统环境的作用:

举例往往是说明一个问题的最好办法,在Win2000下,我们观察“PATH”这个环境变量,

PATH= %SystemRoot%/system32。但是 “SystemRoot”又是一个环境变量, SystemRoot =d:/winnt,所以环境变量“TMP”的最终表征的路径为“d:/winnt/SYSTEM32.如我们手动编辑系统环境变量PATH。修改后PATH=%SystemRoot%/system32;C:/ Program Files。然后设计一个代码,实现浏览器打开目录“C:/Program Files”。这仅涉及一个简单的ShellExecute API

       ShellExecute(NULL, "explore", "Internet Explorer",NULL, "c://Program Files", SW_SHOWNORMAL);

等价于

       ShellExecute(NULL,"explore","Internet Explorer",NULL,"%path%",

SW_SHOWNORMAL);

但是后者有很大的灵活性,不修改代码只修改环境变量path的就能完成新的功能。这对于软件安装程序有着很好的意义。熟练的应用环境变量,有助于写出灵活、模块化的软件。

以上虽然以Win2000为例讲解,但同样适用于其他Windows系统,只是win98系列设置环境变量的方式不同,详情见下节:设定环境变量的算法

三 设定环境变量的算法:

对于对Win98WinMeNTXPWin2003一揽子操作系统,可以分为两类:win98系列,NT系列。它们设定系统环境变量有着本质的不同。但对于设置当前进程的环境变量是一样的。

A 关于系统环境变量

1win98系列设定系统环境变量的算法:

    熟悉win98的都清楚,在C盘一般都有一个“AutoExec.bat”文件,系统启动都要执行它,所以这里是设定系统环境变量的地方,添加一个环境变量只是添加一行

SET PATH=C:/FOLDER1/FOLDER2类似的语句。如果添加一个路径,那么就是类似的语句

SET PATH=C:/FOLDER1/FOLDER2;D:/FOLDER3 。系统要重新启动更改才能有效。

2NT系列的设定系统环境变量的算法:

    首先分析手动编辑环境变量的原理,通过阅读MSDN文档,发现系统其实在注册表

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment

保存系统环境变量,当手动修改完毕时,选择“确定”按钮退出,向系统所有上级窗口发送WM_SETTINGCHANGE消息。系统不需要重新启动。

 

[插曲]:如何向系统所有上级窗口发送WM_SETTINGCHANGE消息?我仔细观看MSDN代码也没有给出一个例子。只能自己想办法,我编写了一个程序专门接受发送给它的WM_SETTINGCHANGE的消息,代码如下:

OnSettingChange(UINT uFlags, LPCTSTR lpszSection){….}

然后手动修改系统环境变量,这是程序接收到消息,分析uFlags, lpszSection两个参数,得知uFlags=0, lpszSection=Environment;

然后模仿该消息,向系统所有上级窗口发送WM_SETTINGCHANGE消息。

       B 关于当前的进程的环境变量

       这个范围的环境变量很简单,进程执行时该变量有效,退出时就失效。所涉及的API就限于GetEnvironmentVariableSetEnvironmentVariableGetEnvironmentStringsSetEnvironmentStrings等。

四 设定环境变量的编程实现:

邮件:charnquan@163.com 

 

 

 

 

 

 

 

 

 

 

 

 

Ice自学第一步——Windows下安装Ice和设置Ice的环境变量

第一步,基于Windows下的安装,所以下载windows版的Ice,官网最新版本是Ice3.4.2: http://www.zeroc.com/download/Ice/3.4/Ice-3.4...
  • wenfanhugh
  • wenfanhugh
  • 2012年02月29日 22:02
  • 7468

Windows环境变量编程设定

本文由浅入深的讲解环境变量的定义、使用。对Win98、WinMe、NT、XP、Win2003的不同系统下的应用进行了全面的分析。并以编程方式实现设置Windows环境变量。这对于一般程序编制和软件安装...
  • crystalNB
  • crystalNB
  • 2013年03月27日 18:31
  • 2887

浅析Windows系统环境变量

什么是环境变量,想知道精确的官方定义,可以直接百度。在此,我只想聊聊我对其的认识。     一、环境变量需求的提出     假设在D盘有一个可执行文件“hi.exe”, 想要在控制台中启动,而目前...
  • u010233287
  • u010233287
  • 2015年05月07日 20:10
  • 3636

在cmd命令行下使用wmic永久修改Windows环境变量

【背景说明】         Windows 系统中,有时为了让我们安装的某些软件能正常执行,比如 JavaJDK 或 Git 等,需要向环境变量中添加和软件相关的值;有时我们自己写了一些脚本或小程序...
  • Qidi_Huang
  • Qidi_Huang
  • 2016年09月23日 10:22
  • 3404

Bash玩转脚本5之Windows上修改环境变量的脚本系统

版权声明:本文为博主Atany原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/yang8456211 目录(?)[+] 一、前言...
  • addisonjing
  • addisonjing
  • 2017年02月08日 15:08
  • 613

Windows下安装Go环境变量

1、从官网下载安装包,链接地址:https://golang.org/dl/,这里我采用go1.8.windows-amd64.zip 2、解压到指定目录 3、配置环境变量 4、查看配置是...
  • u013735544
  • u013735544
  • 2017年04月04日 18:10
  • 178

Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量

首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。永久性修改环境变量的方法有两种:一种是直接修改注册表(此种...
  • lhyhr
  • lhyhr
  • 2013年04月17日 17:41
  • 3359

Windows系统下Java环境变量配置详解

Java语言的初学者安装完JDK之后,在命令行中键入"java","javac"命令时通常会看到如下输出: "java"不是内部或外部命令,也不是可运行的程序或批处理文件。 "javac"不是内部或...
  • yuxxz
  • yuxxz
  • 2015年04月17日 23:46
  • 1411

Wiki——Windows下python2.7 爬虫框架Scrapy环境配置

Wiki——Windows下python2.7 爬虫框架Scrapy环境配置 一个快速,简单,易扩展的的开源爬虫框架。 Scrapy有非常成熟的介绍文档,国内的开发者也对文档进行了大量的翻译,还可以找...
  • u010183402
  • u010183402
  • 2015年08月22日 21:24
  • 2282

基于visual c++之windows核心编程代码分析(21)获取和设置环境变量

环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path...
  • flyingleo1981
  • flyingleo1981
  • 2016年12月09日 20:26
  • 515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows环境变量编程设定
举报原因:
原因补充:

(最多只允许输入30个字)