2016-11-09 240 views
0

我試圖從從我的C++代碼存儲一些會話相關的數據產生的環境變量設置一些這樣的事環境變量C++

的內容批處理文件Session.bat設置環境變量Session.bat

set SessionID_User=SAsdC123ASCascs123 echo %SessionID_User%

我試圖使用CreateProcesssystem我的C++代碼執行,但沒有一個似乎工作。

雖然批處理文件在exe文件中執行時沒有任何異常,但當我嘗試查看打算設置的環境變量時,我在控制檯上使用set打印的變量列表中看不到它我看不到 SessionID_User=SAsdC123ASCascs123

下面是我做的過程

C:\Users\admin\Desktop>Session.exe 

C:\Users\admin\Desktop>set SessionID_User=SAsdC123ASCascs123 

C:\Users\admin\Desktop>echo SAsdC123ASCascs123 
SAsdC123ASCascs123 

C:\Users\admin\Desktop> 

爲什麼,當我從我的exe執行批處理文件中的環境變量沒有得到設置的方式,但在執行批處理文件時,它是集所有好擁有 ?

的另一個問題是,怎麼樣了CreateProcess的當您執行從您的可執行文件的批處理文件,您要創建一個新的進程是在這個用例不同系統()和一般

回答

2

批處理文件在該新進程中本地設置環境變量。

沒有辦法將它們導出備份到父進程,但也有溝通結果的方式回來,包括:

  • 通過標準輸出流。
  • 通過存儲的文件。
  • 通過Windows註冊表(例如命令reg和朋友)。
+0

你如何做到這一點,你能給我一個領導嗎? @Cheers – DevMac

+0

例如,在批處理文件中,您可以使用重定向操作符將'echo'輸出放在文件中,以便父處理稍後可以讀取。像'echo.SessionId = Blah45> results.txt'。 –