繁体   English   中英

原子符号链接替换 windows c# 抛出 IOException “此应用程序不支持符号链接上的当前操作”

[英]Atomic symlink replacement windows c# throws IOException “This application does not support the current operation on symbolic links”

目标是自动更新符号链接目标。 我所有的研究都表明,这样做的唯一方法是使用新目标创建一个新的符号链接,然后删除/替换旧的符号链接。 File.Replace() 抛出 IOException “此应用程序不支持符号链接上的当前操作”。 我目前正在使用本机“kernel32.dll”来创建符号链接。 关于如何 go 关于用新符号链接更新/替换旧符号链接的任何建议将是一个巨大的帮助。

if (File.Exists(oldSymlink))
{
    // Create temp symlink to replace old link
    var replacementSymlinkFile = "path/to/newLink"; 

    CreateSymbolicLink(replacementSymlinkFile, newTargetFile, 0)

    File.Replace(replacementSymlinkFile, oldSymlink, null); // throws SYSTEM IO ERROR This application does not support the current operation on symbolic links
}

正如@Eryk Sun 所述,使用本机“kernel32.dll”中的 MoveFileExW() 方法可以将一个符号链接替换为另一个符号链接。 我没有机会尝试 .NET Core Move() 方法,因为我使用的是本机 dll 已经使用了前一个选项。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM