使用 C++ 在 Windows 上创建符号链接

sca*_*p3y 3 winapi symlink

我想以跨平台的方式从我的程序创建到我的数据的符号链接。对于 *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 的回答是正确的。

Dav*_*nan 5

文档中:

如果函数失败,返回值为零。要获取扩展错误信息,请调用 GetLastError。

你好像没有打过电话GetLastError。你应该这样做。可能的错误代码是ERROR_PRIVILEGE_NOT_HELDwhich has value 1314。如果调用进程没有足够的权限,您就会收到此消息。您需要以高级管理员身份运行才能使用此功能。