環境變量與註冊表

環境變量的概念(來自百度百科) 
  環境變量(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_開頭,以向軟件開發人員代表這是程序可使用的句柄。句柄是用於標識資源的值,以便程序能夠訪問它。

 

想閱讀更多信息,能夠到上文指出的連接地址閱讀。因爲內容是用自動翻譯軟件翻譯,不通順很差理解請閱讀原文。

相關文章
相關標籤/搜索