2012-07-02 7 views
5

Wie kann ich das Ziel einer bereits vorhandenen symbolischen Verbindung ändern? Jede Lösung würde funktionieren: Konsole, Powershell, etc.Ziel für symbolische Verbindung in Windows ändern

Wichtig zu denken ist, diese Änderung atomar so Lösung zu machen, Link zu löschen und dann ein neues zu erstellen, funktioniert nicht für mich.

+0

Wenn Sie das Löschen und das Wiederherstellen in einer Transaktion umschließen, wird es meiner Meinung nach atomar sein. –

+0

Welche Art von Transaktion? Dateisystem-Betrieb wie Datei auf der gleichen Festplatte verschieben, denke ich sind atomar. Zwei Dateibetrieb sind nicht. Korrigiere mich bitte, wenn ich falsch liege. –

+0

Siehe meine Antwort. Unterstützung für transaktionales NTFS wurde in Windows Vista hinzugefügt. –

Antwort

2

Dies scheint mit der ZwFsControlFile function unter Verwendung der FSCTL_SET_REPARSE_POINT control code möglich zu sein. Zumindest habe ich herausgefunden, wie Far Manager es über Process Monitor macht.

+0

Stand: März 2017 [Far Manager] (http://svn.code.sf.net/p/farmmanager/code/trunk/unicode_far/flink.cpp) verwendet [DeviceIoControl] (https://msdn.microsoft.com /en-us/library/windows/desktop/aa363216%28v=vs.85%29.aspx) Funktion zum Ändern/Bearbeiten von Symlink- oder Junction-Zielen. –

2

könnten Sie Transaktions NTFS verwenden. Siehe folgende Funktionen:

Der Nachteil ist, dass MS ironische Unterstützung für Transaktionen. In dem neuen Dateisystem, das in Windows Server 2012 eingeführt wird, sind bestimmte Transaktionen nicht verfügbar.

+0

Danke, Harry. Obwohl es möglich ist, eine Transaktion zu haben. Leider ist die Abwertung ein schlechtes Zeichen, also bin ich mir nicht sicher, ob ich es benutzen kann. –