1. 程式人生 > >Windows環境變數程式設計設定

Windows環境變數程式設計設定

 轉貼:http://blog.csdn.net/talker/archive/2004/07/28/54175.aspx

本文由淺入深的講解環境變數的定義、使用。對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等。

相關推薦

Windows環境變數程式設計設定

 轉貼:http://blog.csdn.net/talker/archive/2004/07/28/54175.aspx 本文由淺入深的講解環境變數的定義、使用。對Win98、WinMe、NT、XP、Win2003的不同系統下的應用進行了全面的分析。並以程式設計方式實

Linux(高階程式設計)2————環境變數以及設定

什麼是環境變數? 環境變數:一般是指作業系統在執行時指定作業系統執行環境的一些引數。Linux是多使用者作業系統,Linux為每個使用者都配置有自己的環境變數,這樣每個使用者都有自己的環境變數,預設情況下每個使用者的環境變數是一樣的。每個使用者可以通過配置環境變數來修改自己的執行環境。

MongoDB設定環境變數設定Windows服務

前言     上一篇部落格主要講了MongoDB的特點、功能、優點以及如何啟動,今天這篇呢為大家介紹如何配置環境變數並設定成Windows服務,總之,我們的宗旨是讓學習變的更加簡單。  一、 如何配置

windows 環境變數設定立即生效的辦法

1) 修改環境變數path的值:先到我的電腦>屬性>高階>環境變數,修改path的環境變數,在最後加上新的路徑。 2) 然後執行“DOS命令提示符”或run cmd,假設要修改PATH變數,不管PATH的原值是什麼,在DOS視窗直接把PATH修改為任意值,

00003JDK環境變數PATH設定_classpath問題

環境變數: 是在作業系統中一個具有特定名字的物件,它包含了一個或者多個應用程式所將用到的資訊。 path: 是一個常用的環境變數,它告訴作業系統,當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下尋找此程式外,還應到哪些目錄下尋找。 設定path環境變數的步

linux 環境變數設定 臨時環境變數與長期環境變數

1. 建立臨時環境變數 1.1 關於環境變數的一些命令 2. 建立長期的環境變數 例項

linux 怎麼檢視系統的環境變數設定jdk 系統環境變數

1.win 7 ,win10 怎麼檢視,新增系統環境的變數,大家都非常清楚的。但是linux 的 卻不一定哦。 開啟終端輸入 :  “echo $PATH “ or  “export ”      如截圖:  2.下載後解壓安裝包jdk-

linux環境變數如何設定

1、在Windows 系統下,很多軟體安裝都需要配置環境變數,比如 安裝 jdk ,如果不配置環境變數,在非軟體安裝的目錄下執行javac 命令,將會報告找不到檔案,類似的錯誤。 2、那麼什麼是環境變數?簡單說,就是指定一個目錄,執行軟體的時候,相關的程式將會按

Java開發環境的搭建以及環境變數設定

一、官網下載想要的jdk版本與安裝的路徑 下載網站:https://www.oracle.com/technetwork/java/javase/downloads/index.html 這裡就以1.7的版本。 首先下載JDK1.7,解壓後雙擊‘jdk1.7.e

Linux2————環境變數以及設定

什麼是環境變數? 環境變數:一般是指作業系統在執行時指定作業系統執行環境的一些引數。Linux是多使用者作業系統,Linux為每個使用者都配置有自己的環境變數,這樣每個使用者都有自己的環境變數,預設情況

linux中環境變數設定

環境變數配置檔案 環境配置檔案有以下幾個: 1.etc/profile : 在登入時,作業系統定製使用者環境時使用的第一個檔案 ,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。 2./etc /environment : 在登入時作

s3c2410上搭建QT/Embedded4 8 5開發環境 五 --程式安裝後的打包,以及環境變數設定

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                前面我們已經搭建好了三個不同版本的QT編譯環境①qt-4.8.5-x11:依賴於x11的qt版本,在PC可以直接"./"執行②qt-4.8.5-x86:依賴與q

Linux編譯安裝軟體過程中環境變數設定

1.編譯過程中執行“./configure”時,最好使用--prefix選項手動設定軟體的安裝目錄,如“$./configure --prefix=/home/lemon/mpich2-install”,這樣可以保證軟體安裝後能夠找到需要使用的可執行檔案及庫檔案的位置。 2.當需要指定某些依賴項時,使用--

windows環境變數引發的血案

最近重灌了系統,決心使用Anaconda來管理python包和虛擬環境。在完成一系列配置後,執行程式,發現老是報錯 D:\Anaconda3\envs\jobnote>python E:\workspace\JobNoteApi\run.py Traceback (most recent cal

安卓ADT和JAVA安裝使用者環境變數設定

假設ADT安裝目錄是: E:\AndroidSDK JAVA安裝目錄是: E:\AndroidSDK\Java 那麼使用者環境變數設定如下: 變數名: ANDROID_SDK 變數值: E:\AndroidSDK\Java 變數名:CLASSPATH 變數值: .;%JA

Android環境變數設定(詳細圖解版)- path

(注:android sdk的安裝路徑配置 最好用別的 因為ANDROID_SDK_HOME常常設定為xxxavd檔案路徑) 查閱了網上很多的資料但是對於環境變數設定介紹的不夠詳細,可能對於大蝦來說是不屑看的,但是對於剛入門的小菜鳥還是比較高深的,呵呵。    

Visual Studio 2008 、 Windows 環境變數介紹和c++檔案流中檔案路徑

Visual Studio 2008  和 Windows 環境變數對設定 相對路徑很重要,這樣便於程式碼的移植,即使換一臺計算機,程式碼不用更改配置,直接就能用。 可以在專案的“工具”“屬性頁”對話方塊中任何接受字串的位置使用這些巨集。這些巨集不區分大小寫。 

uboot環境變數設定bootargs向linux核心傳遞正確的引數)

分割槽方法 1) MTD層的分割槽 2) 通過U-boot傳遞給核心的命令列中的mtdparts=... 3) 其他可以讓核心知道分割槽資訊的任何辦法,(核心預設的命令引數) 下面說到mtdparts,及它的用法: mtdparts mtdparts=fc0

交叉編譯器的環境變數設定

 修改環境變數,把交叉編譯器的路徑加入到PATH。(有三種方法,強烈推薦使用方法一)       5. 立即使新的環境變數生效,不用重啟電腦:      對應方法一:#source /etc/bash.bashrc     對應方法二:# source /etc/prof

Linux中export的用法與環境變數設定

參考自 常用用法 # 功能說明:設定或顯示環境變數。 # export [-fnp][變數名稱]=[變數設定值] # 只在本次登入中有效 # 再增加的路徑用:追加 export PATH=$PATH:/home/jason001 說明 在shell