bash.im ithappens.me zadolba.li
8772

Дискотека девяностых

18 марта 2012, 10:00

На днях к нам обратился один из партнёров. Он попросил помочь разобраться с проблемой одного из его пользователей. Суть сводилась к тому, что с какого-то периода времени перестала запускаться одна из основных программ, входящих в поставку комплекса нашего производства. Запускается, повисит немного в панели задач — и сваливает подчистую в туман.

Для начала запросили стандартную информацию о настройках программ и версии ПО. Вроде всё нормально, ни к чему не подкопаешься. Делать нечего — просим удалённый доступ к машине.

Зашли. Винда самая что ни на есть ХР, нашим ПО поддерживается. Симптомы проявляются, как и было сказано: щёлкнешь по ярлыку программы, она появляется в панели задач, а потом исчезает. Странно.

Пошли в реестр, зачистили настройки, которые хоть как-то могли бы влиять на проблему. Запускаем программу как будто в первый раз. Поведение то же самое. Очень странно.

Пошли смотреть лог инсталляции ПО — вдруг что-то не зарегистрировалось? Просмотрели всё несколько раз — всё на месте, сообщений об отказе регистрации компонентов нет. Очень-очень странно.

Проблема на первом круге не решается. Переходим на второй круг — подключаем разработчиков.

Ставим DBGView, смотрим отладочную печать — видим ошибку, но в том месте, где её быть не должно в принципе. Ошибка возникает при инициализации компонентов, работающих с .NET. Страшная догадка: на машине не установлен .NET! Но такого быть не может — наличие требуется в самом начале инсталляции. Очень-очень-очень странно.

Решение проблемы переходит дальше по эстафете к разработчику, отвечающему за подсистему, которая использует .NET. Сидим, смотрим вместе с ним и ничего понять не можем. Вроде всё на месте. Всё должно работать. Очень-очень-очень-очень странно.

В некоторой тоске автор подсистемы начинает изучать свойства ярлыка, с которого запускается программа на этой машине…

Нашли! В закладке «Совместимость» стояло требование быть совместимым с Windows 95. Естественно, в те далёкие времена никакого .NET и в помине не было, поэтому программа и исчезала, обидевшись, что ей не дают работать в привычной обстановке.

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