winapi - 使用 C++ 在 Windows 上创建符号链接(symbolic link)

标签 winapi symlink

我想以跨平台的方式从我的程序中创建指向我的数据的符号链接(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/

相关文章:

c++ - 将数据从缓冲区写入磁盘上的波形文件

c++ - 如何通过 C++ 启动 explorer.exe?

matlab - Mac OS X 上库的回滚兼容版本

php - 使用符号链接(symbolic link)在 PHP 代码中使用新文件夹

windows - 如何在 cmd 或 PowerShell 中跟踪符号/软链接(soft link)?

perl - 为什么 File::Find 不处理我损坏的符号链接(symbolic link)?

c - 错误 C2275 : illegal use of this type as an expression

python - 如何调试它从 Windows 库 ucrtbase 抛出的访问冲突?

c++ - 创建后无法更改 ListView 中的列宽

c - 解析符号链接(symbolic link)同时避免超时