关于windows环境变量的有关问题

关于windows环境变量的问题
学习计算机的过程中,碰到很多对环境变量设置的问题,尤其是在安装一些需要设置环境变量的软件,总是一头雾水,也不知道该往哪下手。
  在网上查了很多关于环境变量的问题,但一直没办法建立一个完整的概念。现在我所能理解的是环境变量在windows中就是一个类似于编程中的全局变量,用做于对一些特殊处理的特殊标记,比如说path是一些路径,用于程序查找的路径;computername用于计算机的名字等等。
    那么问题来了:
  1.还有很多cmd中set命令显示的变量而在系统属性里面不给予显示的变量,这是什么缘由?
  2.这些变量的设定跟软件的环境变量配置有什么联系?尤其是许多软件的环境变量配置时经常需要添加新的自定义变量,这些自定义变量跟软件的又有什么关联呢?或者说是怎样关联的?
    总得来说就是环境变量是个什么样的机制?
------解决思路----------------------
只有几个是系统自己特殊的环境变量,其他的都是程序自己定义的,相当于一个全局的配置。
比如JAVA_HOME是java自己定义的环境变量,方便其他java程序通过这个环境变量找到java程序和目录。