Directory Junction wird weiterhin gelöscht

1366
Binary Code

Ich habe ein Upgrade von Windows 7 auf 10 Professional auf einer SSD durchgeführt, und ich habe Directory Junctions unter Verwendung der Befehlszeile mklink /Jfür Ordner wie Spiele, Mozilla-Profile usw. erstellt, die auf ein Festplattenverzeichnis verweisen. Alle Junctions funktionieren gut, mit Ausnahme des Mozilla Firefox-Profils, das folgendermaßen verlinkt ist:

Junction created for C:\Users\[USERNAME]\AppData\Roaming\Mozilla <<===>> H:\Users\[USERNAME]\AppData\Roaming\Mozilla

Obwohl diese Kreuzung einwandfrei funktioniert, wird sie in zufälligen Abständen gelöscht. Entweder fehlt nach dem Ruhezustand des Computers die Kreuzung oder nach einem Neustart oder jederzeit während der Verwendung des Computers. Es passiert nicht jedes Mal, wenn ich den Computer neu starte oder in den Ruhezustand versetze usw. Es scheint völlig zufällig zu sein.

Ich habe auch Directory Symbolic Link ( mklink /D) ausprobiert, aber das Gleiche passiert. Interessanterweise habe ich keine Probleme mit den anderen Junctions auf demselben VolumeH:

Es gibt keine Probleme mit NTFS-Berechtigungen und das Volume H:ist eine feste Festplatte (keine entfernbare).

Irgendwelche Ideen, was das verursacht?

5

2 Antworten auf die Frage

1
Binary Code

PortableApps bewirkt das Löschen der Junction, das Problem liegt jedoch im Windows- rmdirBefehl. Gemäß diesem Thread im PortableApps-Forum müssen alle im PortableApps-Format gepackten Anwendungen rmdiralle überflüssigen Ordner entfernen, die möglicherweise von der tragbaren Anwendung erstellt werden. rmdirWenn Sie einen leeren Ordner entfernen können, wird ein Fehler ausgegeben, wenn der Ordner nicht leer ist. Wenn er jedoch für eine Junction verwendet wird, löscht er lediglich die Junction selbst.

Portable Anwendungen, die den AppData\Roaming\MozillaOrdner verwenden, entfernen die Junction beim Schließen. Zu diesen tragbaren Anwendungen gehören Seamonkey, Firefox Developer Edition, Firefox usw.

Momentan scheint es keine Lösung oder Problemumgehung für dieses Problem von der PortableApps-Seite zu geben. Es gibt jedoch eine Möglichkeit, um zu verhindern, dass die Kreuzung gelöscht wird. Anstatt einen Junction ( mklink /j) zu erstellen, können Sie einen symbolischen Link ( mklink /d) erstellen und dann die NTFS-Berechtigungen für den Symlink bearbeiten, um Everyone Deny Full hinzuzufügen. Nachdem ich diesen SU-Thread gelesen hatte, kam ich zu dieser Lösung .

0
Glenn Slayden

Ich konnte das Problem durch Deaktivieren von Schnellstart in den Energieoptionen der Windows 10-Systemsteuerung beheben . Es ist schwer zu finden; Suchen Sie im linken Rand des Bedienfelds der alten Version nach "Ändern, was der Ein- / Ausschalter bewirkt". Einmal gefunden, behauptet es, dass es eingereicht werden sollte unter:

Control Panel > All Control Panel Items > Power Options > System Settings 

enter image description here

Um klar zu sein, scheint es, dass in den letzten Versionen von Windows 10 chkdsk.exewährend bestimmter Neustartszenarien (?) Ausgelöst wird. In meinem Fall hat dies wiederum dazu geführt, dass alle meine permanenten, manuell erstellten Cross-Volume-NTFS- Reparse-Punkte ("Directory Junctions") massiv gelöscht wurden .

Die Standardeinstellung für " Schnellstart " wurde im Creators Update 1709 in "Aktiviert" geändert. In diesem Fall kann zumindest für meinen Fall erklärt werden, wie das zuvor nicht bekannte Problem eingeführt wurde. Sehen Sie hier für weitere Informationen.

Scheint, dass der wahre Täter chkdsk.exeselbst, unabhängig vom auslösenden Szenario, "Fast Startup" oder auf andere Weise sein kann. Es ist wahr - und einfach zu demonstrieren -, dass das explizite Ausführen chkdsk.exeauf einem bestimmten NTFS-Volume alle Cross-Volume-Analysepunkte vollständig zu entfernen scheint. Oder zumindest für diejenigen, die die \\?\Volume\Pfadnotation verwenden, die ich je für diese verwendet habe, und somit alles, worüber ich hier berichten kann:

Erstellen Sie einen Cross-Volume-Hardlink, z

X:\foo> linkd bar \\?\Volume\baz 

Dadurch wird eine Cross-Volume-Hard-Verbindung ("Junction" oder "NTFS-Reparse-Point") eingerichtet, bei der X:\foo\barumgeleitet wird, sodass sie dem Verzeichnis \bazauf dem angegebenen Volume entspricht. Diese Links werden jedoch immer dann gelöscht, wenn chkdsk.exesie auf dem NTFS-Quell-Volume ausgeführt werdenX: