环境变量与注册表

环境变量的概念(来自百度百科) 
  环境变量(environment variables)通常是指在操做系统中用来指定操做系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操做系统中一个具备特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操做系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户能够经过设置环境变量,来更好的运行进程。
 
环境变量的做用(来自百度百科)
环境变量至关于给系统或用户应用程序设置的一些参数,具体起什么做用这固然和具体的环境变量相关。
好比path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找
 
我的理解
理解一:
  操做系统本质上也是程序,只不过它是直接运行在硬件上的(我的理解,在底层层面上计算机更像是机械),它叫系统程序,日常程序编写的程序叫作应用程序,应用程序运行在操做系统之上。咱们知道,其实最先的时候,是没有操做系统的,技术人员直接在硬件上编写程序,与硬件紧密耦合在一块儿,一个程序可能只能在一个单片机上运行。(这个内容不少的,暂时不谈咱们回归主题继续……。)既然操做系统也是是程序,就确定须要变量(数据值),程序都须要变量(变量能够存储一些数据供程序使用),程序运行中须要一些数据,必须从变量中读取。环境变量,应该能够理解为给操做系统软件和运行在操做系统上的应用软件提供一些数据。给操做系统提供的变量,须要存储在一个相对稳定的位置,不依赖操做系统的某段程序,这就须要一个给操做系统用的系统数据库或者系统配置文件。
应用程序和操做系统程序运行时,能够将整个计算机当作是软件的运行环境,那么这些变量就能够理解为环境变量了吧。
 
理解二:
  也许能够把环境变量理解成,操做系统的配置数据什么的。可是环境变量其实须要的层次控制很是多,并且拥有各类分类,各类隶属关系,以利于操做系统的权限层次控制等等。从注册表就能够看出,环境变量包含在注册表之下,注册表是个什么东西,既然称之为表,那么是否是相似于数据库的一个表呢?只是这个表存的数据是供操做系统使用的,这个数据库咱们也不知道在哪里。
  环境变量有用户变量和系统变量,一部分变量给登陆的用户使用,一些则是供操做系统使用的。这个仔细看下注册表的名称就能够看出来。

上面是打开注册表编辑器后看到的第一个界面。linux

classes_Root咱们知道Root通常用来指系统的根目录,顶级权限,系统初始点等等。数据库

其余的:current_User、Local_Machine、Users、Current_Config这些从名字上,大概能够猜想理解是什么东西了。windows

下面再来看下注册表的概念安全

  注册表(Registry,繁体中文版 Windows操做系统称之为登陆档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在 Windows 3.0推出 OLE技术的时候,注册表就已经出现。随后推出的 Windows NT是第一个从系统级别普遍使用注册表的操做系统。可是,从 Microsoft  Windows 95操做系统开始,注册表才真正成为Windows 用户常常接触的内容,并在其后的操做系统中继续沿用至今。
  百度百科中会告诉咱们打开注册表的方式:regedit或regedit.exe、regedt32或regedt32.exe
在注册表编辑器中点击帮助,能够看到如下信息
//--------------------------------------------------------------------

将系统配置信息集中存储在调用注册表的分层数据库中。可使用注册表编辑器,添加并编辑注册表项和注册表值,从备份中还原注册表或将注册表还原为默认值,以及为引用或备份导入或导出项。服务器

还能够打印注册表,以及控制具备编辑注册表权限的账户。网络

有关注册表的详细信息(其中包括注册表概念以及注册表安全性),请转至 Windows Server TechCenter (http://go.microsoft.com/fwlink/?LinkID=53495)。编辑器

//------------------------------------------------------------------------------------------工具

  网上有网友提出一个现象,用程序动态的修改注册表,而后cmd中运行程序却不能正确执行,可是先修改环境变量,而后就会发现注册表中是有数据的。这是怎么回事呢?性能

  再联系上文,注册表编辑器里面的一句话:“将系统配置信息集中存储在调用注册表的分层数据库中。”这句话是有问题的,一点都不通顺,读起来让人网站

疑惑到第注册表和数据库什么关系,我认为这里是翻译的问题,可是很差纠正,还须要再猜想研究。

  可是至少咱们知道,注册表和一个数据库有点关系,同时这是对系统配置信息的管理。咱们主要关注,注册表编辑器是对系统配置信息的集中管理,那么上面咱们对环境变量的理解就不会错了。确实是系统的配置信息。

     以上咱们已经大概感受出环境变量是个什么东西,可是注册表还很模糊,继续看:

  注册表是windows操做系统中的一个核心数据库,其中存放着各类参数,直接控制着windows的启动、硬件驱动程序装载以及一些windows应用程序的运行,从而在整个系统中起着核心做用。这些做用包括了软、硬件的相关配置和状态信息,好比注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各类许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其余底层的系统状态信息,以及其余数据等。

  具体来讲,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息;系统内核从Registry中选取信息,包括要装入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等;同时设备驱动程序也向Registry传送数据,并从Registry接收装入和配置参数,一个好的设备驱动程序会告诉Registry它在使用什么系统资源,例如硬件中断或DMA通道等,另外,设备驱动程序还要报告所发现的配置数据;为应用程序或硬件的运行提供增长新的配置数据的服务。配合ini文件兼容16位Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中—样建立它本身的INI文件或在win.ini和system.ini文件中建立入口;同时windows还提供了大量其余接口,容许用户修改系统配置数据,例如控制面板、设置程序等。
  若是注册表受到了破坏,轻则使windows的启动过程出现异常,重则可能会致使整个windows系统的彻底瘫痪。所以正确地认识、使用,特别是及时备份以及有问题恢复注册表对windows用户来讲就显得很是重要。
 
注册表的数据类型:
注册表的数据类型主要有如下四种:显示类型(在编辑器中)数据类型说明
REG_SZ:字符串:文本字符串
REG_MULTI_SZ:多字符串值:含有多个文本值的字符串
REG_BINARY:二进制数:二进制值,以十六进制显示,
REG_DWORD:双字值;一个32位的二进制值,显示为8位的十六进制值

 

以上内容整理自网络,还有我的的理解和心得。

 

 =======================

201810151903更新

经过注册表,环境变量存储一些信息,这是具体到windows操做系统配置一些信息的方案。

 linux系统有本身的实现方式,linux系统配置直接叫系统配置文件。

 

 =====================

20190123更新

在windows系统中,点击开始,运行,输入:regedit,会打开注册表编辑器。点击帮助会看到如下简介:

将系统配置信息集中存储在调用注册表的分层数据库中。可使用注册表编辑器添加并编辑注册表项和注册表值,从备份中还原注册表或将注册表还原为默认值,以及为引用或备份导入或导出项。还能够打印注册表,以及控制具备编辑注册表权限的账户。

 

地址:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc782053(v=ws.10)

 Microsoft®WindowsServer 2003家族注册表是一个数据库,其中包含Windows Server 2003家族操做系统的系统配置信息。

 

可搜索:注册表概念  Registry concepts

地址:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc780070%28v%3dws.10%29

 

Registry overview  注册表概述

在Microsoft®Windows Server 2003系列中,系统配置信息集中存储在称为注册表的分层数据库中。注册表将替换Windows中用于MS-DOS®和Microsoft LAN Manager的许多.ini、.sys和.com配置文件。

有关管理注册表的详细信息,请参阅Microsoft Windows资源工具包网站上的“Windows Server 2003家庭注册表参考”。有关Windows Server 2003支持的信息,请参阅支持资源。

 

Registry structure  注册表结构

注册表以子树及其键、子键和条目的层次结构组织。根据每台计算机上安装的设备、服务和程序,一台计算机的注册表内容可能与另外一台计算机的注册表内容有很大差别。

键能够有子键,子键能够有子键。虽然注册表中的大多数信息都存储在磁盘上而且被视为永久性信息,但每次操做系统启动时都会覆盖存储在易失密钥中的某些信息。

 

Registry subtrees  注册表子树

Windows Server_2003系列操做系统有两个注册表子树:HKEYU localU machine和HKEYU users。可是,为了使注册表中的信息更容易找到,注册表编辑器实用程序显示五个子树,其中三个子树是注册表其余部分的别名。下表列出并描述了这五个子树。

HKEY_LOCAL_MACHINE  

包含有关本地计算机系统的信息,包括硬件和操做系统数据,如总线类型,系统内存,设备驱动程序和启动控制数据。

HKEY_CLASSES_ROOT 

包含各类OLE技术和文件类关联数据使用的信息。若是相应的键或值存在于hkey_local_machine\software\classes或hkey_current_user\software\classes中,则在hkey_classes\u root中存在特定的键或值。若是在这两个地方都存在一个键或值,那么HKEY_CURRENT_USER当前用户版本就是出如今HKEY_CLASSES_ROOT中的版本。

HKEY_CURRENT_USER 

包含当前以交互方式登陆(而不是远程登陆)的用户的用户配置文件,包括环境变量、桌面设置、网络链接、打印机和程序首选项。此子树是hkey_用户子树的别名,并指向当前用户的hkey_用户\安全ID。

HKEY_USERS 

包含有关活动加载的用户配置文件和默认配置文件的信息。这包括同时出如今hkey_当前用户中的信息。远程访问服务器的用户在服务器上没有此项下的配置文件;他们的配置文件加载到本身计算机的注册表中。

HKEY_CURRENT_CONFIG 

包含有关本地计算机系统启动时使用的硬件配置文件的信息。此信息用于配置要加载的设备驱动程序和要使用的显示分辨率等设置。此子树是hkey_local_machine子树的一部分,并指向hkey_local_machine\system\currentcontrolset\hardware profiles\current。

 

每一个根密钥名称都以HKEY_开头,以向软件开发人员代表这是程序可使用的句柄。句柄是用于标识资源的值,以便程序能够访问它。

 

想阅读更多信息,能够到上文指出的连接地址阅读。因为内容是用自动翻译软件翻译,不通顺很差理解请阅读原文。

相关文章
相关标签/搜索