我想以跨平台的方式从我的程序创建到我的数据的符号链接。对于 *nix 系统,有符号链接。对于Windows,我从这个答案中找到了函数CreateSymbolicLink,并且我以这种方式运行它:
int test = CreateSymbolicLink(input_fileName.c_str(), ouput_fileName.c_str(), 0);
Run Code Online (Sandbox Code Playgroud)
但test总是返回0,这意味着函数失败(并且 中指定的文件output_fileName确实不存在)。我究竟做错了什么?
提前致谢!
更新:
我在上述调用之后立即运行了GetLastError :
DWORD err = GetLastError();
Run Code Online (Sandbox Code Playgroud)
和err = 1314。谢谢@大卫
更新2:
根据@David的回复,Windows不允许非管理员创建软链接。如果 Win API 的未来迭代会改变这一点,我将继续提问。然后我会更新答案。截至 2015 年 3 月 26 日,@David 的回答是正确的。
从文档中:
如果函数失败,返回值为零。要获取扩展错误信息,请调用 GetLastError。
你好像没有打过电话GetLastError。你应该这样做。可能的错误代码是ERROR_PRIVILEGE_NOT_HELDwhich has value 1314。如果调用进程没有足够的权限,您就会收到此消息。您需要以高级管理员身份运行才能使用此功能。