Знания никогда не бывают лишними, или как Unchecky с Punto Switcher-ом не подружились

Иногда я мысленно ругаю себя за то, что бесцельно трачу время в интернете в поисках новых идей и интересуюсь всем подряд. Особенно я люблю интересоваться тем, что происходит в разных open-source и freeware проектах.

Буквально вчера мое внимание привлекла программа Unchecky, которая снимает всякие "галочки" в различных инсталляторах, не позволяя нежелательным приложениям устанавливаться. Про эту программу я знал давно, благодаря Хабру, и хоть она у меня не установлена, и в её эффективности я сомневаюсь, мне захотелось более подробно ознакомиться с её сайтом. Мне было интересно узнать, какие отзывы о ней пишут другие пользователи, поэтому зашел на ее баг-трекер. 

Мое внимание привлек этот баг http://unchecky.userecho.com/topic/819469-unchecky-conflict-with-browsers-and-windows-7-64-bit/

И вот уже сегодня получаю от пользователя жалобу на глюки при отображении окна Image Uploader под бетой Windows 10:

Unchecky bugs

По специфике артефактов видно, что Unchecky (возможно, в сочетании с Punto Switcher) негативно влияет на отображение диалоговых окон winapi (а в Image Uploader они используются повсеместно для построения интерфейса, в т.ч. используются вложенные диалоги). В других окнах такие глюки не наблюдаются. Видимо, автор перемудрил со своими хуками.

В общем, я с недоверием отношусь к программам с закрытым кодом, которые создают сомнительные сервисы и внедряют свои DLL в другие процессы, пусть и с декларируемой благой целью. Хуки - эта такая хрупкая вещь, которая при неграмотном использовании может привести к непредвиденным последствиям. Что интересно, программа Unchecky не смогла справиться со своей основной задачей - не смогла снять галочки Яндекса при установке Punto Switcher, с которым она конфликтует, чем доказала неэффективность такого подхода в борьбе с нерадивыми производителями программного обеспечения. В конце концов, создатели инсталляторов перейдут на использование элементов GUI, которые не создают нативных win32-контролов. Существует множество фреймворков, которые сами рисуют окна с нуля. И автору придется писать нереальные костыли, чтобы справиться с поставленной задачей. Правда, на помощь может прийти т.н. Acessibility и UI Automation, но ненадолго.

Так моя любознательность позволила мне сэкономить несколько часов на выявления бага не в моем коде и под операционной системой, которая у меня не установлена.


Комментарии
Оставьте ваш комментарий
Никнейм:
Никнейм*:
irmaseo.ru (2020-03-14 01:14:27)
Очень интересная статья