我想以跨平台的方式从我的程序中创建指向我的数据的符号链接(symbolic link)。对于 *nix 系统,有 symlink .对于 Windows,我找到了函数 CreateSymbolicLink来自 this answer在 SO 中,我以这种方式运行它:
int test = CreateSymbolicLink(input_fileName.c_str(), ouput_fileName.c_str(), 0);
但是test
总是返回0
,这意味着函数失败(并且output_fileName
中指定的文件确实不存在)。我做错了什么?
提前致谢!
更新:
我确实运行了 GetLastError在上述调用之后:
DWORD err = GetLastError();
err = 1314
。谢谢@大卫
更新 2:
根据@David 的回复,Windows 不允许非管理员创建软链接(soft link)。如果 Win API 的 future 迭代改变了这个问题,我将保持开放的状态。然后我会更新答案。截至 2015 年 3 月 26 日,@David 的回答是正确的。
最佳答案
来自documentation :
If the function fails, the return value is zero. To get extended error information, call GetLastError.
您似乎没有调用 GetLastError
。你应该这样做。可能的错误代码是 ERROR_PRIVILEGE_NOT_HELD
其值为 1314
。如果调用进程没有足够的权限,你会得到这个。您需要以提升的管理员身份运行才能使用此功能。
关于winapi - 使用 C++ 在 Windows 上创建符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279334/