Если вы хотите пропустить проблему перенаправленного рабочего стола и проблему разрешений, созданную соединением «Все пользователи», вы можете жестко закодировать каталог поиска и пропустить любые пути поиска, которые включают «Все пользователи». Пример (два изменения помечены комментариями):
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
Оригинальный ответ:
Вы упомянули, что ваш рабочий стол перенаправлен в сетевую папку. Если ваши пользователи имеют права доступа к пути к сетевому профилю ( strUsers
в этом контексте), они должны получить ошибку «Отказано в доступе», поскольку For Each
цикл пытается удалить файл с перенаправленного рабочего стола другого пользователя.
Пример: удаление \\fileserver\profiles\YourUser\Desktop\TeamViewer 12 Host.lnk
будет в порядке, но удаление \\fileserver\profiles\SomeOtherUser\Desktop\TeamViewer 12 Host.lnk
даст «Отказано в доступе».