Disappearing Desktop Shortcuts on Windows 7

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.

The following two tabs change content below.
Andy Parkes is Technical Director at Coventry based IT support company IBIT Solutions. Formerly, coordinator of AMITPRO and Microsoft Partner Area Lead for 2012-2013. He also isn't a fan of describing himself in the third person.

Latest posts by Andy Parkes (see all)

3 thoughts on “Disappearing Desktop Shortcuts on Windows 7

  • Hello there,

    Thanks for the hints !
    I made some PS script because I don’t want to do twice the same things.

    here it is :
    Takeown /f C:\Windows\diagnostics\scheduled\Maintenance\TS_BrokenShortcuts.ps1 /A
    icacls c:\windows\diagnostics\scheduled\Maintenance\TS_BrokenShortcuts.ps1 /grant Administrators:F
    (Get-Content C:\windows\Diagnostics\Scheduled\Maintenance\TS_BrokenShortcuts.ps1) | Foreach-Object {$_ -replace “4”, “100”} | Set-Content C:\windows\Diagnostics\Scheduled\Maintenance\TS_BrokenShortcuts.ps1

    Take care, at line 2, the admin account is dependant of your system language…


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.