【发布时间】:2017-05-25 04:00:06
【问题描述】:
我正在使用 C++ 应用程序来启动另一个进程。这个过程恰好是java所以我需要运行javaw.exe。但是,我希望我的应用程序可以在任何安装了兼容 Java 版本并在 Windows 搜索路径中的 Windows 系统上运行。
我正在使用 CreateProcess 启动我的进程,但是第一个参数需要可执行文件的完整路径并且不搜索 Windows 搜索路径。
我想在我的 CPP 代码中从 windows 搜索路径中找到 javaw.exe 的完整路径,然后传递给 CreateProcess,以便我可以适当地启动,然后通过 TerminateProcess。停止外部程序。
如何通过windows搜索路径找到javaw.exe的完整路径?
编辑:这个问题是不同的。比引用的重复,因为我的具体问题是使用 Windows 搜索路径(顺便说一句,它包括本地目录、PATH env 和一些标准位置)。我想专门通过 CPP 做到这一点。我特别想使用 windows 搜索路径系统,因为用户可能拥有多个 javaw.exe,我希望通过 windows 标准搜索路径而不是我实现的自定义搜索方法可以预测哪个 javaw.exe。
【问题讨论】:
-
如果 Windows 搜索路径是指 PATH,那么我认为应该能够获取路径并提取 Java 的位置。有时还有 JAVA_HOME 设置,你也可以使用。
-
这不是重复的,因为我试图通过 Windows 搜索路径通过 C++ 执行此操作。该问题与语言无关,并希望通过任何可能的方式找到它。理想的解决方案是返回适当的 exe 路径的 cpp“where”或“which”函数。
-
我假设当您说“通过 C++”时,您的意思只是“在 C++ 中”而不是“使用 C++ 标准库”?正如所写,这有点模棱两可。