Windows löscht Verknüpfungen zu Netzlaufwerken

Windows ist dafür bekannt, Arbeiten zu erledigen, von welchen der Anwender nichts weiss. Diese „Selbstheilung/-bereinigung“ kann sich allerdings auch oft negativ auswirken. Beispielsweise dann, wenn man Verknüpfungen zu gelegentlich angesteckten USB-Laufwerken oder Netzlaufwerken verwendet.

Solche Verknüpfungen können automatisch gelöscht werden, weil die Ressourcen während der automatischen Systemüberprüfung von Windows nicht erreichbar sind.

Ausgeführt wird diese Funktion über ein vordefiniertes Powershell-Script, welches im Windows Verzeichnis darauf wartet, ausgeführt zu werden. Die Lösung auf das Problem ist daher denkbar einfach: Die Manipulation des genannten Scripts.

Automatische Löschung von Verknüpfungen „deaktivieren“

Als erster Schritt muss das Script in Besitz genommen werden, damit man daran überhaupt Änderungen vornehmen kann. Dazu wählt man per Rechtsklick im Kontextmenü den Punkt „Eigenschaften“.

C:\Windows\Diagnostics\Scheduled\Maintenance\TS_BrokenShortcuts.ps1

screenie

Danach im Reiter „Sicherheit“ unten auf den Button „Erweitert“ klicken. Beim dann geöffneten Dialogfenster oben den Reiter „Besitzer“ wählen und unten auf „Bearbeiten“ klicken. Dort bestimmt man sich selbst oder eine Gruppe als Besitzer und bestätigt alle noch geöffneten Dialoge bis nur noch der Eigenschafts-Dialog mit den Sicherheitseinstellungen geöffnet ist. Nun wählt man in der Liste den vorher als Besitzer definierten User/Gruppe und gibt diesem die benötigten Berechtigungen, um an der Datei eine Änderung vornehmen zu können.

Im zweiten Schritt wird das Script bearbeitet. Die Datei kann in einem beliebigen Texteditor geöffnet werden (Bspw. Notepad++, notfalls auch notepad.exe). Und zwar sucht man die Zeile 44 (für notepad.exe-User: fast zu unterst, letztes if-Statement) und ändert -gt 4  zu -gt 400 . Diese Einstellung bewirkt, dass Verknüpfungen erst gelöscht werden, sobald es 400 davon gibt!

Hinweis: Wie immer ist es auch hier Sinnvoll, eine Sicherheitskopie der Originaldatei anzulegen!

Zeile 44 (Original):

 if(-not([String]::IsNullOrEmpty($brokenDesktopShortcuts) -and [String]::IsNullOrEmpty($brokenStartupShortcuts)) -and (((Get-ListLength $brokenDesktopShortcuts) + (Get-ListLength $brokenStartupShortcuts)) -gt 4))

Zeile 44 (Mainpluiert):

 if(-not([String]::IsNullOrEmpty($brokenDesktopShortcuts) -and [String]::IsNullOrEmpty($brokenStartupShortcuts)) -and (((Get-ListLength $brokenDesktopShortcuts) + (Get-ListLength $brokenStartupShortcuts)) -gt 400))

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert