更改Windows中符号链接的目标

时间:2012-07-02 15:17:00

标签: windows filesystems symlink

如何更改已存在的符号链接的目标。任何解决方案都可行:console,powershell等。

重要的想法是以原子方式进行此更改,以便删除链接然后创建新链接的解决方案对我不起作用。

4 个答案:

答案 0 :(得分:2)

ZwFsControlFile function使用FSCTL_SET_REPARSE_POINT control code似乎可以实现这一点。至少这是我从远程管理器通过Process Monitor获取的内容。

答案 1 :(得分:2)

您可以使用事务性NTFS。请参阅以下功能:

缺点是MS正在弃用对交易的支持。特别是在Windows Server 2012中引入的新文件系统中没有可用的事务。

答案 2 :(得分:1)

您可以尝试创建新的符号链接,然后重命名新链接以覆盖旧链接。

这里提到了一些可能性:

Is an atomic file rename (with overwrite) possible on Windows?

答案 3 :(得分:0)

在Windows 7 CMD控制台中,对LSemi的方法稍作修改对我来说就是有效的

mklink TempLink NewTarget

copy /l /y TempLink OldLink

del TempLink

我有一个每秒可读取OldLink多次的进程,通过这种方法,我可以将OldLink不断更新为新目标,而不会引起读取错误。严格来说,这可能不是原子的,但是实现符号链接副本所花费的时间必须非常短,以免干扰。