6

如何更改现有符号链接的目标。任何解决方案都可以工作:控制台、powershell 等。

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

4

4 回答 4

2

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

缺点是 MS 正在弃用对事务的支持。特别是在 Windows Server 2012 中引入的新文件系统中不提供事务。

于 2012-07-03T20:38:50.007 回答
2

使用控制代码的ZwFsControlFile功能似乎可以做到这一点。至少这是我从 Far Manager 如何通过 Process Monitor 收集到的。FSCTL_SET_REPARSE_POINT

于 2012-07-02T15:27:42.727 回答
1

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

这里提到了一些可能性:

Windows 上是否可以进行原子文件重命名(带覆盖)?

于 2012-07-02T15:29:54.023 回答
0

在 Windows 7 CMD 控制台中对 LSemi 的方法稍作修改对我有用

mklink TempLink NewTarget

copy /l /y TempLink OldLink

del TempLink

我有一个每秒多次读取 OldLink 的过程,通过这种方法,我可以不断地将 OldLink 更新到新目标,而不会导致读取错误。严格来说,这可能不是原子的,但影响符号链接副本所花费的时间必须非常小,以至于不会干扰。

于 2018-11-13T12:14:46.383 回答