我正在使用C ++应用程序启动另一个进程。这个过程碰巧是java,所以我需要运行javaw.exe。但是,我希望我的应用程序可以在安装了兼容Java版本的任何Windows系统上以及Windows搜索路径中工作。
我正在使用CreateProcess启动进程,但是第一个参数需要可执行文件的FULL路径,并且不会搜索Windows搜索路径。
我想从CPP代码中的Windows搜索路径中找到javaw.exe的完整路径,然后传递给CreateProcess,以便我可以通过TerminateProcess适当地启动和稍后启动。停止外部程序。
如何通过Windows搜索路径找到javaw.exe的完整路径?
编辑:这个问题是不同的。比引用的重复项要多,因为我的特定问题是使用Windows搜索路径(顺便说一句,它包括本地目录,PATH env和一些标准位置)。我想专门通过CPP做到这一点。我特别想使用Windows搜索路径系统,因为用户可能有多个javaw.exe,并且我希望使用哪个窗口可以通过Windows标准搜索路径来预测,而不是我实现的自定义搜索方法。
有一个称为SearchPath的Win32 API函数,该函数(取决于注册表设置)首先搜索本地目录,然后搜索Windows PATH变量。您可以选择添加另一个目录进行搜索。可以在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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句