[英]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.