線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1286
推到 Plurk!
推到 Facebook!

暫時修改環境變數

答題得分者是:senso
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-02-22 11:33:07 IP:124.9.xxx.xxx 未訂閱
 各位前輩們
小弟又來造次了

小弟想要在自己的程式執行的時候
暫時修改環境變數
執行結束之後就把環境變數改回來
目前有找到幾個方式:
1. 用command line下set,新增資料到環境變數。 (但是用這個方式我不知道什麼時候修改的生命週期是什麼時候)
2. 程式持行前先用GetEnvironmentVariable把本來的資訊記起來,用 SetEnvironmentVariable 設定。程式結束之後再寫回本來的資訊。但是執行期間可能會影響其他會讀取環境變數的程式

想請教前輩們
那一種方式比較合適嗎?
或是有其他更好的方法?

編輯記錄
taishyang 重新編輯於 2011-02-21 20:49:42, 註解 歸類成[問題]‧
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-02-23 08:26:23 IP:124.9.xxx.xxx 未訂閱
 再補充一個問題
我的問題好多....Orz

我用下列方式無法得到環境變數的PATH
得到的結果都是空的
[code cpp]
const int tmpSize = 128;
char* tmpBuf = new char [tmpSize];
GetEnvironmentVariable( "Path", tmpBuf, tmpSize );
ShowMessage( tmpBuf );
delete tmpBuf;
[/code]

但是用下面這個方式卻可以
[code cpp]
ShowMessage( GetEnvironmentVariable("Path") );
[/code]

我的開發環境是 BCB2009
我看BCB似乎有把 GetEnvironmentVariable 包裝為自己的 function
這樣子呼叫會呼叫到 GetEnvironmentVariableA

雖然已經有一個方式可以用了
但是畢竟不是標準的WinAPI
我想請教一下該怎麼才能正確的使用這個API


senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-02-23 10:03:28 IP:61.219.xxx.xxx 訂閱
我兩種都可以跑耶,可能tmpsize太小吧
我的path長度有8xx,tempsize改大於那長度就會正常
dadai
一般會員


發表:29
回覆:31
積分:12
註冊:2009-01-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-02-23 10:57:27 IP:124.9.xxx.xxx 未訂閱
真的是 size 的問題....Orz
是我太疏忽了

感謝 senso 的指導


===================引 用 senso 文 章===================
我兩種都可以跑耶,可能tmpsize太小吧
我的path長度有8xx,tempsize改大於那長度就會正常
系統時間:2017-12-16 15:24:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!