Исправление исчезновения ярлыков на рабочем столе Windows 7

Если вы работаете в Windows 7, вы могли заметить, что ярлыки на рабочем столе исчезают без видимой причины. Оказывается, что обслуживание системы несет ответственность за это. Он работает как еженедельное техническое обслуживание, которое влияет на ярлыки на рабочем столе двумя способами.

Сначала будут удалены ярлыки на рабочем столе, которые не использовались в течение как минимум трех месяцев. Обслуживание системы также удалит неработающие ярлыки на рабочем столе, если их более четырех. Проблема с последним заключается в том, что Windows 7 распознает ярлыки для отключенных сетевых расположений как поврежденные, а также ярлыки, которые ссылаются на папки оболочки.

Microsoft предлагает два решения проблемы. Первый совет, чтобы количество сломанных ярлыков было меньше четырех. Это не всегда возможно из-за проблем со сломанными ярлыками, упомянутыми выше.

Второе предложение от Microsoft - отключить обслуживание компьютеров:

  • Нажмите Пуск, а затем нажмите Панель управления.
  • В разделе «Система и безопасность» нажмите «Найти и устранить проблемы».
  • На левой панели навигации нажмите Изменить настройки.
  • Установите для параметра «Обслуживание компьютера» значение «Выкл.».

Это, однако, отключает все другие связанные с обслуживанием компьютера задачи, такие как проверка системного времени, ошибок тома диска или отчетов об ошибках дискового пространства.

Все задачи обслуживания выполняются с помощью сценариев, которые находятся в каталоге c: \ windows \ Diagnostics \ Scheduled \ Maintenance \. Возможны варианты редактирования сценариев непосредственно в этом каталоге. Разрешения запрещают редактировать файлы текущим пользователем.

Исправление исчезновения ярлыков на рабочем столе Windows 7

Обратите внимание: это взлом, который может повлиять на другие части операционной системы. После этого все работало нормально на тестовой системе, но перед редактированием убедитесь, что файлы правильно скопированы.

Сначала нам нужно взять под контроль файлы, чтобы мы могли их редактировать. Для этого сначала нужно стать владельцем, а затем изменить права доступа текущего пользователя, чтобы можно было изменять файлы.

Первая часть может быть автоматизирована. Просто скачайте скрипт на этом форуме и выполните его. Это должно добавить запись Take Ownership в контекстное меню в проводнике Windows.

После установки сценария перейдите в C: \ Windows \ Diagnostics \ schedule \ Maintenance в Windows Explorer и щелкните правой кнопкой мыши файл TS_BrokenShortcuts.ps1 . Выберите опцию Take Ownership, которая должна передать право собственности зарегистрированному пользователю.

У пользователя по-прежнему нет прав на сохранение файла, а это значит, что нам нужно завершить следующий шаг, прежде чем мы сможем редактировать сломанный ярлык в файле Powerscript, чтобы он не удалял сломанные ярлыки автоматически.

Откройте командную строку с повышенными правами. Вы делаете это, нажимая на Пуск, Все программы, затем Стандартные. Щелкните правой кнопкой мыши ссылку «Командная строка» и выберите «Запуск от имени администратора».

Теперь выполните следующую команду, чтобы предоставить активному пользователю полные права на файл. Обязательно замените USERNAME на имя активного пользователя.

icacls c:\windows\diagnostics\scheduled\maintenance\TS_BrokenShortcuts.ps1 /grant USERNAME:F

Теперь вы можете редактировать файл в обычном текстовом редакторе, таком как Блокнот. Откройте его и найдите строку (строка 11)

[string]$list = ""

Удалите все, что находится ниже этой строки до (строка 22)

return $list

Удаляемые строки:

Get-ChildItem -Path $path -filter *.lnk | Foreach-Object {

$ fullPath = ConvertTo-WQLPath $ _. FullName

$ wmiLinkFile = Get-WmiObject -query "SELECT Name, Target, AccessMask FROM Win32_ShortcutFile WHERE Name = '$ fullPath'"

if (-not (Test-ValidLink $ wmiLinkFile) -and (Test-Delete $ wmiLinkFile))

{

$ list = AttachTo-List $ list $ wmiLinkFile.Name

}

}

Это в основном возвращает пустой список скрипту, так что ярлыки не удаляются. Я протестировал его с пятью сломанными ярлыками, и они не были удалены после запуска обслуживания системы.

Это исправило сломанные ярлыки, но у нас все еще есть проблема, что ярлыки, которые не использовались в течение некоторого времени, также удаляются Windows 7.

Мы должны (почти) выполнить ту же самую операцию здесь. Найдите файл TS_UnusedDesktopIcons.ps1 в том же каталоге. Возьмите его в руки и предоставьте активному пользователю права доступа.

После этого отредактируйте файл и найдите строку (24)

[string]$list = ""

Удалить все до строки (35)

return $list

так что следующие строки будут удалены

Get-ChildItem -Path $path -filter *.lnk | Foreach-Object {

$ fullPath = ConvertTo-WQLPath $ _. FullName

$ wmiLinkFile = Get-WmiObject -query "SELECT Name, Target, AccessMask FROM Win32_ShortcutFile WHERE Name = '$ fullPath'"

$ lastAccessTime = Get-LastAccessTime $ _. FullName

if ((Test-ValidLink $ wmiLinkFile) -and (Test-Delete $ wmiLinkFile) -and (Test-FileShortcut $ wmiLinkFile) -and (Test-Unused $ lastAccessTime $ threshold))

{

$ list = AttachTo-List $ list $ wmiLinkFile.Name

}

}

Обратите внимание, что я не тестировал второй скрипт, но он должен работать так же хорошо.

Это должно решить все проблемы, возникающие у пользователей с удаленными ярлыками на рабочем столе Windows 7.

Убедитесь, что вы правильно сделали резервную копию файлов, прежде чем редактировать их. Пожалуйста, дайте мне знать, если это сработало для вас или у вас есть идея, как исправить проблему с удаленными ярлыками в Windows 7.