Office中国论坛/Access中国论坛

标题: 【经验】Win7与Win XP用Environ函数获取环境变量结果的异同 [打印本页]

作者: tmtony    时间: 2015-4-1 23:42
标题: 【经验】Win7与Win XP用Environ函数获取环境变量结果的异同
Win7与Win XP用Environ函数获取环境变量结果的异同,发现一篇比较全的有关Windows 7与 windows xp的环境变量详细区别的文章,也记录一下,以免忘记

原作者:一江秋水

Win7与Win XP用Environ函数获取环境变量结果的异同

  环境变量是用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等等。当你运行某些程序需要查找路径时,除了在当前文件夹中寻找外,还会到设置的默认路径中去查找。例如环境变量中有一个名为“Path”的变量,里面就存储了一些常用命令所存放的路径。
  默认的环境变量XP/2003共有30个,Windows 7有31个。环境变量又可分为系统变量和用户变量,默认的用户变量XP/2003有3个,Windows 7是2个,其余的都是系统变量。用户变量与系统变量的区别仅在于二者的作用域不同:用户变量只对这个用户有效,任何用户都可以添加、修改或删除本用户的环境变量;而系统环境变量对整个系统都有效,但只有管理员才能添加、修改或删除系统环境变量。
  在编程中可用下面的代码获取环境变量:
st = Environ(i)  'i = 1~30

  这样获取的环境变量字符串由三部分组成:等号、等号前面的变量名、等号后面的变量值。例如:
ALLUSERSPROFILE=H:\Documents and Settings\All Users

  也可以用指定变量名的方法来获取变量值,这也是编程中最常用的方法。例如:
st = Environ("ALLUSERSPROFILE")

  下面是一个获取全部环境变量的代码例子:
Private Sub Form_Load()
For i = 1 To 30 '如果操作系统是Windows 7请把循环终值改为31
  Debug.Print "【" & Right("0" & i, 2) & "】" &  Environ(i)
Next
End Sub

  但 Windows 7 的环境变量与 Windows XP/2003 的有些不同,除了数量不同外,有的变量名不同,有的是变量名虽然相同,但变量值不同,这样,我们在代码中引用 Environ 函数时就要注意了,以免不但达不到我们的预期目的,反而还造成不必要的损失。
  下面把 XP 与 Win7 默认的环境变量全部分别列出,以方便大家鉴别。

一、Windows XP/2003 下的环境变量(假设当前用户为一江秋水,系统装在H盘):
【01】ALLUSERSPROFILE=H:\Documents and Settings\All Users(所有用户文件夹路径)
【02】APPDATA=H:\Documents and Settings\一江秋水\Application Data(当前用户应用软件数据路径)
【03】CLIENTNAME=Console(客户机名称)
【04】CommonProgramFiles=H:\Program Files\Common Files(公用程序文件夹路径)
【05】COMPUTERNAME=604-3IKVQ1WE05J(计算机名)
【06】ComSpec=H:\WINDOWS\system32\cmd.exe(DOS命令执行文件全路径文件名)
【07】FP_NO_HOST_CHECK=NO(主机终止机制?存疑)
【08】HOMEDRIVE=H:(系统所在的驱动器)
【09】HOMEPATH=\Documents and Settings\一江秋水(当前用户文件夹路径,注意前面无盘符)
【10】KTD=H:\WINDOWS\Driver Packs(驱动包路径)
【11】LOGONSERVER=\\ZDXS(当前登录的服务器)
【12】NUMBER_OF_PROCESSORS=1(处理器数量)
【13】OS=Windows_NT(操作系统内核)
【14】Path=H:\WINDOWS\system32;H:\WINDOWS;H:\WINDOWS\System32\Wbem;H:\Program Files\Common Files\Thunder Network\KanKan\Codecs
【15】PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
【16】PROCESSOR_ARCHITECTURE=x86(处理器架构或类型)
【17】PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 2, GenuineIntel(处理器 ID)
【18】PROCESSOR_LEVEL=15(处理器级数)
【19】PROCESSOR_REVISION=0102(处理器版本)
【20】ProgramFiles=H:\Program Files(公用程序文件夹路径)
【21】SESSIONNAME=Console(对话名称)
【22】SystemDrive=H:(系统所在的驱动器)
【23】SystemRoot=H:\WINDOWS(系统目录,与30项 WINDIR 相同)
【24】TEM=D:\Temp(用户变量,存放临时文件的目录)
【25】TEMP=D:\Temp(用户变量,存放临时文件的目录)
【26】TMP=D:\Temp(用户变量,存放临时文件的目录)
【27】USERDOMAIN=ZDXS(当前用户关联的网络域名,通常为主机名)
【28】USERNAME=一江秋水(当前用户名)
【29】USERPROFILE=H:\Documents and Settings\一江秋水(当前用户文件夹路径,注意前面有盘符)
【30】windir=H:\WINDOWS(系统目录,与23项 SYSTEMROOT 相同)

说明:
1.【14】这个变量包含了几个由分号隔开的路径,系统默认将会在这些文件夹中寻找可执行文件。如果你在“运行”中输入一个可执行程序的名字(如 ls、rc-update或者emerge)而它并不在这一系列文件夹中,那么你的系统将不会执行它(除非你输入命令的全路径,如/bin/ls)。

2.【15】列出了命令执行顺序。当我们在“运行”中输入 CMD 而不是 CMD.COM 的时候,系统怎么就打开 CMD.COM 而不打开 CMD.EXE 或者 cmd.txt 呢?这就是由该变量决定的。当我们在"运行"中输入CMD 的时候,系统会按照该变量中扩展名的书写顺序来一个个地匹配查找,如果.com 在前就执行cmd.com,而不执行 cmd.exe 或者其他名为 cmd 而扩展名不同的文件。


二、Windows 7 下的环境变量(假设当前用户为Administrator):
【01】ALLUSERSPROFILE=C:\ProgramData(与第19项相同。所有用户配置文件夹路径,这是"All Users"的备份,隐藏属性)
【02】APPDATA=C:\Users\Administrator\AppData\Roaming(当前用户漫游应用数据文件夹路径,隐藏属性)
【03】CommonProgramFiles=C:\Program Files\Common Files(公共程序文件夹路径)
【04】COMPUTERNAME=WIN-31CJCVF3VTI(计算机名)
【05】ComSpec=C:\Windows\system32\cmd.exe(DOS命令执行文件全路径文件名)
【06】FP_NO_HOST_CHECK=NO(主机终止机制?)
【07】HOMEDRIVE=C:(系统所在的驱动器)
【08】HOMEPATH=\Users\Administrator(当前用户路径,注意前面无盘符)
【09】LOCALAPPDATA=C:\Users\Administrator\AppData\Local(当前用户本地应用数据文件夹路径,隐藏属性)
【10】LOGONSERVER=\\WIN-31CJCVF3VTI(当前登录的服务器)
【11】NUMBER_OF_PROCESSORS=1(处理器数量)
【12】OS=Windows_NT(操作系统内核)
【13】Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
【14】PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC(可执行文件的扩展名及执行顺序)
【15】PROCESSOR_ARCHITECTURE=x86(处理器架构或类型)
【16】PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 2, GenuineIntel(处理器 ID)
【17】PROCESSOR_LEVEL=15(处理器级)
【18】PROCESSOR_REVISION=0102(处理器版本)
【19】ProgramData=C:\ProgramData(与第1项相同。所有用户配置文件夹路径,这是"All Users"的备份,隐藏属性)
【20】ProgramFiles=C:\Program Files(公用程序文件夹路径)
【21】PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
【22】PUBLIC=C:\Users\Public(公共用户配置文件夹路径)
【23】SESSIONNAME=Console(对话名称)
【24】SystemDrive=C:(系统所在的驱动器)
【25】SystemRoot=C:\Windows(系统路径,与30项 windir 相同)
【26】TEMP=E:\Temp(用户变量路径,存放临时文件)
【27】TMP=E:\Temp(用户变量路径,存放临时文件)
【28】USERDOMAIN=WIN-31CJCVF3VTI(当前用户关联的网络域名,通常以主机名代替)
【29】USERNAME=Administrator(当前用户名)
【30】USERPROFILE=C:\Users\Administrator(当前用户文件夹路径,注意前面有盘符)
【31】windir=C:\Windows(系统目录,与25项 SystemRoot 相同)

  说明:
1.对【13】、【14】项的说明参看上面 XP/2003 的有关说明。

2.Windows 7 不管你将它装在哪个盘,它都会把系统所在盘符改为 C:,其余的盘符全都依次推后一个字母。例如,笔者把 Windows 7 装在H盘(C盘装XP),但进入Windows 7系统后,它所在的H盘变为了C盘,而装 XP的变为了D盘,其余的盘符都依次后推了一个字母。所以在编程中也要对这一点加以注意。






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3