2016-11-09 242 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'。 –