【发布时间】: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