Se você quiser ignorar o problema da área de trabalho redirecionada e o problema de permissões criado pela junção "Todos os usuários", poderá codificar o diretório de pesquisa e ignorar os caminhos de pesquisa que incluam "Todos os usuários". Exemplo (as duas alterações estão marcadas com comentários):
strShortcut = "TeamViewer 12 Host.lnk"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
strUsers = "C:\Users" ' <-- or "C:\Documents and Settings" for XP, etc.
Set objUsers = objFSO.GetFolder(strUsers)
For Each objFolder In objUsers.SubFolders
strCheck = objFolder & "\Desktop\" & strShortcut
If InStr(strCheck, "All Users") = 0 Then ' <-- SKIP "All Users" to avoid permission problems
Wscript.Echo "Checking:" & strCheck
If objFSO.FileExists(strCheck) Then
Wscript.Echo "Deleting:" & strCheck
objFSO.DeleteFile(strCheck)
End If
End If
Next
Resposta original:
Você mencionou que sua área de trabalho é redirecionada para um local de rede. Se seus usuários tiverem direitos de passagem para o caminho do perfil de rede ( strUsers
neste contexto), eles deverão receber um erro "Acesso negado", pois o loop For Each
tentará excluir um arquivo de outro usuário área de trabalho redirecionada.
Exemplo:
A exclusão de \fileserver\profiles\YourUser\Desktop\TeamViewer 12 Host.lnk
será boa, mas a exclusão de \fileserver\profiles\SomeOtherUser\Desktop\TeamViewer 12 Host.lnk
fornecerá "Acesso negado".