如何从Windows中的可执行文件中推断出文件/目录路径

How are file/directory paths inferred from within an executable in windows?

本文关键字:文件 路径 推断出 可执行文件 Windows      更新时间:2023-10-16

当我们指定文件或C 源代码中可执行文件的路径时,当将源代码的对象文件打包到可执行文件中时如何解决?

例如,如果我要在程序中使用_popen并想运行另一个可执行文件,我将如何提供该可执行文件的路径。

这是我尝试的:

  1. 将外部可执行文件放在与源的同一目录中代码:在Visual Studio中的调试模式下按预期工作。
  2. 将外部可执行文件放入调试/发行目录中该项目,然后我正在建造的可执行文件看不到我试图使用_popen调用外部可执行文件。

在Java World中,我可以将JAR文件推断为另一个文件系统,并且可以像在任何其他文件系统上一样阅读路径。

对不起,如果问题有点粗糙。我刚刚使用Visual C 从Java/Ruby Web开发人员跳入Windows应用程序开发。因此,我什至无法提出正确的关键字来在Internet上搜索。

希望这会编译,它是接近的:

TCHAR szExePath[MAX_PATH];
GetModuleFileName(0, szExePath, _countof(szExePath)); // 0 for handle is the process handle shortcut for this API
TCHAR szDrive[MAX_PATH] szDir[MAX_PATH]
_tsplitpath(szExePath, szDrive, szDir, NULL, NULL);
TCHAR szNewExePath;
_tmakepath(szNewExePath, szDrive, szDir, _T("numerodos"), _T(".exe")); // change numerodos do something real
TCHAR flags  = _T("wt"); // or whatever
_popen(szNewExePath, flags);
// really, on Windows I'd probably use CreateProcess