C++ C++;添加包含文件的文件夹
我有一个非常古老的大型项目,在模拟过程中调用不同的EXE文件。所有文件都放在一个文件夹中。目前,文件夹目录位于path env变量中,但不幸的是,我不得不将其删除 是否有方法将文件夹添加到进程正在搜索文件的列表中?我知道SetDllDirectory可以为DLL完成这项工作,但这不适用于EXEC++ C++;添加包含文件的文件夹,c++,windows,exe,C++,Windows,Exe,我有一个非常古老的大型项目,在模拟过程中调用不同的EXE文件。所有文件都放在一个文件夹中。目前,文件夹目录位于path env变量中,但不幸的是,我不得不将其删除 是否有方法将文件夹添加到进程正在搜索文件的列表中?我知道SetDllDirectory可以为DLL完成这项工作,但这不适用于EXE 如果无法执行此操作,是否可以更改线程(而不是进程)的工作目录?在启动新进程(EXE)时,Windows会为启动的新进程创建父进程的环境变量缓冲区副本。因此,对已启动流程的环境变量的所有更改对父流程的环境变
如果无法执行此操作,是否可以更改线程(而不是进程)的工作目录?在启动新进程(EXE)时,Windows会为启动的新进程创建父进程的环境变量缓冲区副本。因此,对已启动流程的环境变量的所有更改对父流程的环境变量没有影响。换句话说,Windows生成一个malloc+memcpy来为已启动的进程创建一个新的环境变量表 因此,在应用程序中,可以使用加载路径的本地副本的字符串值 接下来检查此字符串是否已经包含包含要调用的EXE的目录路径(来自应用程序的上一次调用)。如果路径已包含此路径,则无需执行任何操作 否则,请检查路径字符串是否已以分号结尾。如果不是这样,请附加分号。然后附加包含要调用的EXE的目录的路径。最后,通过使用更新的字符串更新环境变量路径的进程副本 看看示例代码
现在,只需更新应用程序(进程)的PATH环境变量,调用或启动其他可执行文件就可以了。您可以使用
setlocal
仅修改父进程的PATH变量,使用setlocal
创建一个小批量文件,set PATH=which
,然后myapp.exe
。这可以工作,但我不能这样做;/(我的应用被另一个通过DLL调用)你能用旧名称创建一个符号链接,指向合法路径中的某个新目录吗?