C ++通过Windows搜索路径

时间:2017-01-10 15:40:08

标签: c++ windows process path

我正在使用C ++应用程序启动另一个进程。这个过程碰巧是java所以我需要运行javaw.exe。但是,我希望我的应用程序能够在安装了兼容的java版本的任何Windows系统上以及在Windows搜索路径中工作。

我正在使用CreateProcess启动我的进程,但第一个参数需要可执行文件的FULL路径,而不搜索Windows搜索路径。

我想从我的CPP代码中的Windows搜索路径中找到javaw.exe的完整路径,然后传递给CreateProcess,以便我可以通过TerminateProcess适当地启动。停止外部程序。

如何通过Windows搜索路径找到javaw.exe的完整路径?

编辑:这个问题有所不同。因为我的具体问题是使用Windows搜索路径(btw包括本地目录,PATH环境和一些标准位置)。我想通过CPP专门做到这一点。我特别想使用Windows搜索路径系统,因为用户可能有多个javaw.exe,我想通过Windows标准搜索路径预测哪一个是可预测的,而不是我实现的自定义搜索方法。

1 个答案:

答案 0 :(得分:2)

有一个名为SearchPath的Win32 API函数(取决于注册表设置)首先搜索本地目录,然后搜索windows PATH变量。您可以选择添加另一个目录进行搜索。有关详细信息,请参阅the documentation on MSDN

以下是一些示例代码:

LPSTR lpFilePart;
char filename[MAX_PATH]; 

if(!SearchPath( NULL, "javaw", ".exe", MAX_PATH, filename, &lpFilePart))
{ 
     //error handling here
}

std::cout<<"The path is " << filename<<std::endl;