我正在使用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标准搜索路径预测哪一个是可预测的,而不是我实现的自定义搜索方法。
答案 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;