【问题标题】:Poco's Path current() is not returning the current working directory in C++Poco 的 Path current() 没有返回 C++ 中的当前工作目录
【发布时间】:2020-12-21 04:44:44
【问题描述】:

我正在尝试使用 Poco::Path::current() 获取 C++ 程序的当前工作目录。当我正常运行程序或“以管理员身份运行”时,它工作正常并提供正确的路径。但是当使用“Run Elevated”运行程序时会出现问题。该函数将返回“C:\WINDOWS\system32”而不是工作目录。我试图找到解决方案,但到目前为止还没有 Poco 库。我在here 发现了一个类似的问题,但它使用的是仅适用于 Windows 的 GetModuleFileName。我需要在不同的操作系统(如 linux)中部署程序,Poco 库会处理这个问题。在以提升的方式运行程序时,是否有另一种方法可以使用 Poco 库获取真正的工作目录,或者我需要检查是否是 Windows,使用 GetModuleFileName 方法,否则只使用 Poco 的 current() 函数?

【问题讨论】:

  • 如果您启动提升的命令提示符,切换到您想要的目录,然后运行您的程序会发生什么?我相信提升的程序默认使用c:\windows\system32作为它们的工作目录。
  • @Tumbleweed53 如果我这样做,它将返回正确的工作目录
  • 这就是我要问你的。这是一个测试。尝试不会超过一分钟。
  • @Tumbleweed53 我做了这个“启动提升的命令提示符,切换到你想要的目录,然后运行你的程序”,结果是>>它将返回正确的工作目录
  • 您在寻找当前的工作目录吗?或者对于可执行文件的目录?正如@Tumbleweed53 所说,提升cmd 提示的当前工作目录是C:\WINDOWS\system32。这是 Windows 的工作方式,而不是 Poco。

标签: c++ windows file filesystems poco-libraries


【解决方案1】:

如果您使用Poco::Application 作为主类的基类,那么您可以使用Poco::Application::commandPath() 函数。

如果没有,您可以执行类似于 Poco 在 Poco::Application::getApplicationPath() 中所做的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2014-12-05
    • 1970-01-01
    • 2016-03-26
    • 2017-06-22
    • 2013-11-27
    相关资源
    最近更新 更多