PDA

Показать полную графическую версию : [решено] Автоматизация удаления ярлыков в Панели задач


specialist
09-12-2015, 14:37
Итак, имеем сборник WPI с бесплатным софтом, который ставится автоматом. Впоследствии имеем много (штук 30) ярлыков на рабочем столе и не менее дюжины в панели задач (в данном случае применительно к Windows 8.1, но думаю и в более поздних может тоже проявляться).
Захламленный новыми ярлыками рабочий стол было решено чистить их перемещением в каталог Soft
в результате подсказки на одном из форумов, родилось пару строк:
FORFILES /P "%public%\desktop" /M *.lnk /D %DATE% /C "cmd /c move /y @path "%public%\desktop\Soft""
FORFILES /P "%userprofile%\desktop" /M *.lnk /D %DATE% /C "cmd /c move /y @path "%public%\desktop\Soft""
которые перемещают с рабочих столов текущего пользователя и общего профиля только те ярлыки, которые появились в текущий день в новый каталог.

аналогично решил поступить с ярлыками в панели задач
FORFILES /S /P "%AppData%\Microsoft\Internet Explorer\Quick Launch" /M *.lnk /D %DATE% /C "cmd /c del @path /f /q"
но вот незадача: ярлыки физически удаляются, но на панели задач остаются дохлые иконки, при нажатии на которые сообщается что не удается открыть этот элемент, т.к. он возможно был удален, перемещен и т.д. и предлагает удалить ярлык (после перезагрузки или перелогина все остается на своих местах). вот и интересно где винда еще может хранить инфу...

Решение:
вобщем для себя задачу решил таким образом:
в операциях WPI назначенных до установки программ выполняется
REG EXPORT HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband "%temp%\taskband.reg"
а после выполнения всех установок чистятся от новых ярлыков по вышеприведенной схеме соответствующие каталоги и запускается батник

FORFILES /P "%public%\desktop" /M *.lnk /D %DATE% /C "cmd /c move /y @path "%public%\desktop\Программы""
FORFILES /P "%userprofile%\desktop" /M *.lnk /D %DATE% /C "cmd /c move /y @path "%public%\desktop\Программы""
FORFILES /S /P "%AppData%\Microsoft\Internet Explorer\Quick Launch" /M *.lnk /D %DATE% /C "cmd /c del @path /f /q"
FORFILES /P "%systemdrive%\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch" /M *.lnk /D %DATE% /C "cmd /c del @path /f /q"
reg import "%temp%\taskband.reg"
del /f /q "%temp%\taskband.reg"
taskkill /f /im explorer.exe
start "" explorer.exe

который перезаписывает нужную ветку реестра данными снятыми до начала установки всех программ и перезапускает проводник

Казбек
09-12-2015, 14:51
specialist,
Ярлыки находятся по пути:
C:\Users\<UserName>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
В реестре:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband
Пробуйте так:
DEL /F /S /Q /A "%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\*"

REG DELETE HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband /F

specialist
09-12-2015, 15:16
Казбек, благодарю за внесение ясности (реестр)
/S Рекурсивное выполнение программы forfiles
во всех подпапках, аналогично "DIR /S"
следовательно и этот подкаталог должно было достать. в условиях задачи стояло не убить все значки, а только те которые появились в день установки приложений
с реестром уже интереснее: после удаления раздела и перелогина панель задач действительно предстала девственно чистой, но задача, повторюсь, стояла: убрать только свежие ярлыки.

ради интереса просто закинул в %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\ ярлык одной из программ, но на панели он не появился, как следствие делаем вывод что нужен комплекс из файла и записи в вышеуказанный ключ реестра

ради чистоты эксперимента поставил: mail ru agent / yandex browser / viber - каждая создала свой ярлык на панели задач. тут же штатно деинсталлировал их и ярлыки этих приложений из панели задач после исчезли, оставив все остальные их некасающиеся ярлыки в нетронутом виде. как следствие напрашивается вывод что в установщиках/деинсталляторах успешно применяется некий нужный мне алгоритм импорта / экспорта в значения параметров Favorites и FavoritesResolve раздела HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband

как бы его вычленить для самостоятельного применения...

Казбек
09-12-2015, 15:20
как бы его вычленить для самостоятельного применения... »
Запустите Process Monitor до установки. Проанализируйте записи сделанные программой, можно задать отображение записей только по реестру.

specialist
10-12-2015, 15:08
вобщем для себя задачу решил таким образом:
в операциях WPI назначенных до установки программ выполняется
REG EXPORT HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband "%temp%\taskband.reg"
а после выполнения всех установок чистятся от новых ярлыков по вышеприведенной схеме соответствующие каталоги и запускается батник
reg import "%temp%\taskband.reg"
del /f /q "%temp%\taskband.reg"
taskkill /f /im explorer.exe
start "" explorer.exe
который перезаписывает нужную ветку реестра данными снятыми до начала установки всех программ и перезапускает проводник




© OSzone.net 2001-2012