将CreateProcess与通过bat文件设置的环境变量一起使用

时间:2012-03-24 02:20:23

标签: c++ delphi winapi

我正在使用CreateProcess函数执行外部应用程序,为了执行此类应用程序,我需要在运行.bat文件之前设置一些环境变量。问题是当我调用CreateProcess运行bat文件然后再次执行CreateProcess以运行外部应用程序时,不使用环境变量。问题是当我第二次执行CreateProcess函数时,我如何使用bat文件中设置的环境变量?

3 个答案:

答案 0 :(得分:6)

如果初始createprocess批处理文件只是设置环境变量,请改为创建环境变量块,并通过CreateProcess()调用直接传递它。

此处提供了一些示例代码,用于获取/设置环境变量以及将块传递给CreateProcess()http://www.delphidabbler.com/articles?article=6

答案 1 :(得分:2)

您可以使用CreateProcess()运行操作系统的cmd.exe程序,一次执行多个命令,例如:

TCHAR szCmd[(MAX_PATH * 3) + 16] = {0};
TCHAR szPathToCmdExe[MAX_PATH+1] = {0}
GetEnvironmentVariable(TEXT("COMSPEC"), szPathToCmdExe, MAX_PATH+1);
wsprintf(szCmd, TEXT("\"%s\" /C \"%s && %s\""), szPathToCmdExe, szPathToBat, szPathToProgram);
CreateProcess(NULL, szCmd, ...);

答案 2 :(得分:1)

如果从批处理文件中执行其他应用程序,则会设置这些环境变量。您可以将可执行文件名作为参数传递给批处理文件。在批处理文件中设置环境变量时,它们仅在该批处理文件退出之前存在。