如何更改已存在的符号链接的目标。任何解决方案都可行:console,powershell等。
重要的想法是以原子方式进行此更改,以便删除链接然后创建新链接的解决方案对我不起作用。
答案 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不断更新为新目标,而不会引起读取错误。严格来说,这可能不是原子的,但是实现符号链接副本所花费的时间必须非常短,以免干扰。