【问题标题】:Get executing directory in C++在 C++ 中获取执行目录
【发布时间】:2010-06-14 14:33:05
【问题描述】:

我有一个 .CAB 文件,它作为 Windows CE 机器上安装程序的一部分运行。 CAB 是用 C++ 编写的。

CAB 文件作为升级过程的一部分运行两次,但在不同时间的不同位置运行。如何仅使用 C++ 找出正在从哪个目录(执行目录)执行 .CAB 文件?

谢谢

【问题讨论】:

  • 不确定我是否理解这种情况。 CAB 有重复的磁盘映像?它从具有显式(不同)启动文件夹的同一图像运行两次?在这两种情况下, ::GetCurrentDirectory() 不够吗?
  • Windows CE 没有“当前目录”的概念...
  • 你为什么一直坚持使用wince标签。当你使用windows-cewindows-ce 时它是多余的。
  • 我没有意识到这是多余的?也许只是一个坏习惯!

标签: c++ directory windows-ce


【解决方案1】:

如果“仅 C++”是指不使用 Windows API,我认为标准库没有这样做的功能。

如果可以调用Win32 API,只需调用GetModuleFileName(),第一个参数为NULL,就可以得到当前可执行文件的路径。

现在,问题是:我们运行.CAB,可执行文件是什么?从 .CAB 中提取的安装 DLL,还是运行 .CAB 的 shell 组件?

你也可以试试GetCommandLine(),因为第一个条目应该是可执行路径/名称(它实际上是传递给CreateProcess()的字符串,所以你不能100%确定)。

【讨论】:

  • 我可以访问 winbase,所以应该可以,我现在试试
  • 不幸的是,这仅显示了加载执行 cabfile 的 wceload.exe 的路径,而不是 cabfile 位置本身:(
  • OK,那就试试GetCommandLine()吧,希望你能看到CAB的路径作为wceload的参数...
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多