Я пытаюсь изменить все ярлыки на компьютере. Скрипт работает нормально, но время от времени выдает ошибку, что свойство .Target объекта недоступно. Поскольку мой запрос ищет только файлы с расширением .lnk, этого никогда не должно быть. (Для получения дополнительной информации об этой ошибке вы можете увидеть документы MS здесь: http://technet.microsoft.com/en-us/library/ff406382.aspx#H25)
Рассматриваемый скрипт:
strComputer = "."
Set wshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile WHERE Extension = 'lnk' AND Drive = 'C:'")
For Each objFile in colFiles
If InStr(1, ucase(objFile.Target), "METER.EXE") Then
Set objShortcut = wshShell.CreateShortcut(objFile.Name)
Wscript.Echo "FIXING: " & objShortcut.TargetPath
End If
Next
Для любопытных: цель этого скрипта — исправить десятки ярлыков на наших лабораторных компьютерах, которые ранее были модифицированы для поддержки «доморощенного» приложения лицензирования/измерения. Во всех случаях исходный путь .EXE был удален из цели, но его все еще можно найти в пути к ярлыку.
Спасибо
РЕДАКТИРОВАТЬ: полное сообщение об ошибке. Вроде появляется чаще после перезагрузки, но ни разу не запускал скрипт 2-3 раза.
Ошибка выполнения Microsoft VBScript: объект не поддерживает это свойство или метод: «objFile.Target»