我在某个目录A中定义了一个程序,在另一个目录B中定义了它的快捷方式,并且我在路径PATH中添加了B。在另一个目录C中,我正在运行cmd.exe,并使用命令progname.lnk arg1 arg2
执行该程序。我的理解是,在这种情况下,“当前工作目录”为C,但是当我使用_getcwd(请参见下文)获取当前工作目录时,我得到目录A,即存放程序的位置。
#include <iostream>
#include <direct.h>
#define GCWD _getcwd
int main() {
char cwd[256];
GCWD(cwd, 256);
std::cout << cwd << std::endl;
}
我使用命令mwe.lnk
编译并运行了该程序。该程序存储在A中,在B中具有对其的快捷方式,就像实际程序一样,我从C运行它。
此代码由计算生活的answer to a related question通知,这与here所使用的技术相同。
我对什么是“当前工作目录”是正确的理解吗?这似乎与Computinglife的第一段答案相吻合,那么我在做什么错呢?
[创建快捷方式时,Windows将它们配置为将工作目录设置为程序的存储位置。清空快捷方式属性中的该字段可解决此问题。