【问题标题】:Find what directory the running process EXE is stored in [duplicate]查找正在运行的进程EXE存放在哪个目录[重复]
【发布时间】:2010-07-29 16:06:22
【问题描述】:

可能重复:
How to get the application executable name in Windows (C++ Win32 or C++/CLI)?

我可以使用GetCurrentDirectory() 找到进程正在运行的目录,但是如何找到可执行文件所在的目录呢?

【问题讨论】:

标签: c++ winapi


【解决方案1】:

【讨论】:

  • 你能举个例子吗?我不清楚我从哪里得到 HMODULE 句柄。
  • @John: GetModuleHandle(NULL)
  • 如果你想要主可执行文件,GetModuleHandle(NULL)。如果您想要一个 DLL,则在调用 DllMain 时(除其他外)传递该 DLL 的句柄。
  • 好的,很酷。所以这给了我一个包含文件名的拉路径。是否有一个方便的功能可以让我获得完整的目录路径,没有文件名?例如获取 c:\temp\app.exe 并返回 c:\temp?
  • @John:是的,它是 PathRemoveFileSpec -> msdn.microsoft.com/en-us/library/bb773748(v=VS.85).aspx
【解决方案2】:

在 Visual C++ 中,我们使用

CString m_sAppFolder =  __targv[0] ;

它返回一个类似“C:\blah\blah\executable_name.exe”的字符串

【讨论】:

  • -1 用于: 1. 对 MFC 的不必要依赖。 2.与尼尔莫斯的回答有同样的问题。 3.使用非标准__targv
  • 不应使用此技术。 CreateProcess 的调用者可以为 argv[0] 创造任何他们想要的价值——它甚至不必存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2021-04-26
  • 2015-06-10
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多