Corrija os atalhos da área de trabalho do Windows 7 desaparecendo

Se você executa o Windows 7, pode ter notado que os atalhos da área de trabalho desaparecem sem motivo aparente. Acontece que a Manutenção do Sistema é responsável por isso. Ele é executado como um serviço de manutenção semanal que afeta os atalhos da área de trabalho de duas maneiras.

Primeiro, ele remove os atalhos da área de trabalho que não são usados ​​há pelo menos três meses. A Manutenção do sistema também removerá atalhos quebrados na área de trabalho se houver mais de quatro deles. O problema com o último é que o Windows 7 reconhecerá atalhos para locais de rede desconectados como quebrados e também atalhos que apontam para pastas shell.

A Microsoft oferece duas soluções para o problema. O primeiro conselho é manter o número de atalhos quebrados abaixo de quatro. Isso nem sempre é possível devido aos problemas com os atalhos quebrados mencionados acima.

A segunda sugestão da Microsoft é desativar a Manutenção do computador:

  • Clique em Iniciar e, em seguida, clique em Painel de controle.
  • Em Sistema e segurança, clique em Localizar e corrigir problemas.
  • No painel de navegação esquerdo, clique em Alterar configurações.
  • Defina Manutenção do computador como Desligado.

No entanto, isso desativa todas as outras tarefas relacionadas à manutenção do computador, como verificação da hora do sistema, erros de volume de disco ou relatórios de erros de espaço em disco.

Todas as tarefas de manutenção são alimentadas por scripts localizados em c: \ windows \ Diagnostics \ Scheduled \ Maintenance \. As opções são para editar os scripts diretamente nesse diretório. As permissões proíbem que os arquivos sejam editados pelo usuário atual.

Reparando os atalhos da área de trabalho do Windows 7 desaparecendo

Observação: este é um hack que pode afetar outras partes do sistema operacional. Tudo funcionou bem depois em um sistema de teste, mas certifique-se de fazer backup dos arquivos corretamente antes de editá-los

Primeiro, precisamos assumir o controle dos arquivos para poder editá-los. Para fazer isso, você precisa se apropriar primeiro e depois modificar os direitos de acesso do usuário atual para que os arquivos possam ser modificados.

A primeira parte pode ser automatizada. Basta baixar o script neste fórum e executá-lo. Isso deve adicionar uma entrada Obter Propriedade ao menu do botão direito do mouse no Windows Explorer.

Vá para C: \ Windows \ diagnostics \ schedule \ Maintenance no Windows Explorer após instalar o script e clique com o botão direito do mouse no arquivo TS_BrokenShortcuts.ps1 . Selecione a opção Obter propriedade, que deve transferir a propriedade para o usuário conectado.

O usuário ainda não tem permissão para salvar o arquivo, o que significa que também precisamos concluir a próxima etapa antes de podermos editar os atalhos quebrados Arquivo Powerscript para que ele não exclua os atalhos quebrados automaticamente.

Abra um prompt de linha de comando elevado. Faça isso clicando no botão Iniciar, Todos os programas e Acessórios. Clique com o botão direito do mouse no link Prompt de Comando e selecione Executar como Administrador.

Agora, emita o seguinte comando para conceder ao usuário ativo todos os direitos do arquivo. Substitua USERNAME pelo nome do usuário ativo.

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

Agora você pode editar o arquivo normalmente em um editor de texto como o Bloco de Notas. Abra-o e localize a linha (linha 11)

[string]$list = ""

Exclua tudo abaixo que esteja abaixo dessa linha até (linha 22)

return $list

As linhas que são excluídas são:

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

$ fullPath = ConvertTo-WQLPath $ _. FullName

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

if (-not (Teste-ValidLink $ wmiLinkFile) -e (Teste-Excluir $ wmiLinkFile))

{

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

}

}

Isso basicamente retorna uma lista em branco para o script, para que nenhum atalho seja excluído. Eu testei com cinco atalhos quebrados e eles não foram excluídos após a execução da manutenção do sistema.

Isso corrigiu os atalhos quebrados, mas ainda temos o problema de que os atalhos que não são usados ​​há algum tempo também são excluídos pelo Windows 7.

Temos que (quase) executar a mesma operação aqui. Localize o arquivo TS_UnusedDesktopIcons.ps1 no mesmo diretório. Assuma a propriedade e conceda direitos de acesso ao usuário ativo.

Edite o arquivo depois e localize a linha (24)

[string]$list = ""

Excluir tudo até a linha (35)

return $list

para que as seguintes linhas sejam excluídas

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

$ fullPath = ConvertTo-WQLPath $ _. FullName

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

$ lastAccessTime = Get-LastAccessTime $ _. FullName

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

{

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

}

}

Observe que eu não testei o segundo script, mas deve funcionar tão bem.

Isso deve resolver todos os problemas que os usuários têm com os atalhos removidos na área de trabalho do Windows 7.

Certifique-se de fazer backup dos arquivos corretamente antes de editá-los. Informe-me se isso funcionou para você ou se você tem uma idéia melhor de como corrigir o problema de atalho excluído no Windows 7.