Had a bit of weird support query I wanted to blog about in case I need it again, it helps anyway else or for further comment!
Client called as she’d setup some shortcuts on her desktop to some files she uses on a regular basis and they had disappeared.
I wasn’t sure where they’d gone, maybe she’d deleted them by mistake, so put it down to one of those things and we re-created them and left it at that.
She called me about a week later with the same problem. We re-created the shortcuts again and I setup auditing on the PC to track file deletes from the desktop.
She called back about a week later with the same thing.
After I’d setup auditing I went away and did some more research and found this Microsoft support article,
Desktop shortcuts disappear in Windows 7 (KB 978980)
Basically there is a “System Maintenance Troubleshooter” task that runs periodically and one of the areas of maintenance is to tidy up broken desktop shortcuts (a shortcut whose target doesn’t exist). If it finds more than four broken shortcuts on the desktop it deletes them all.
The thing is as far as I could tell they weren’t broken shortcuts – the missing shortcuts all pointed to files on the network but they were all accessible, she uses them on a daily basis!
The annoying thing about this is the “workaround” provided by the support article.
Method 1 – Keep the number of broken shortcuts to four or less
Method 2 – Disable the System maintenance troubleshooter
Click Start and then click Control Panel
Under System and Security click Find and Fix Problems
On the left navigation pane click Change Settings
Set Computer Maintenance to Off
As far as I can tell the shortcuts aren’t broken so how can I keep them to less then four!
Disabling system maintenance is something I’m not inclined to do either.
So what to do instead?
One option is to follow the details in this post.
The system maintenance tasks are basically powershell scripts stored in c:\windows\Diagnostics\Scheduled\Maintenance
The scripts are viewable and after tweaking the permissions to allow you to edit them you can make any changes you like.
The article suggests deleting a section of the code so that it will always return an empty list of broken shortcuts hence there will be nothing to delete.
My preference is to change the parameter on the threshold for broken shortcuts as it’s a little less drastic than chopping code out.
if(-not([String]::IsNullOrEmpty($brokenDesktopShortcuts) -and [String]::IsNullOrEmpty($brokenStartupShortcuts)) -and (((Get-ListLength $brokenDesktopShortcuts) + (Get-ListLength $brokenStartupShortcuts)) -gt 100))
The bit in bold was 4 originally.
The comments in the article have similar suggestions including a batch file you can use to do the whole thing for you.
My only concern about this is that the scripts could be changed in a future service pack or software update and you’d end up with the same problem.
I also don’t understand why the System Maintenance Troubleshooter has no configurable options other than “On/Off”.
I haven’t actually implemented this for the customer as I provided my own couple of workarounds to try.
The first is that if you create a folder on the desktop and put the shortcuts in there the problem goes away entirely – it’s an extra click so again this isn’t always desirable.
The second is that since this Windows 7 why not make use of the “Jump Lists” feature – it’s designed exactly with this scenario in mind!
I ran through jump lists and she was very pleased with that as it was easier than having to navigate to the desktop to find the shortcuts.
Anyone else come across this? Any other suggestions for something I’m missing.