Vista/W7 - доработка программ для XP

Тема в разделе "WASM.WIN32", создана пользователем provocateur, 3 ноя 2009.

  1. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Попробовал поискать по форуму и в гугле. Может не по тем запросам искал, но ничего не нашел.

    Хотелось бы узнать, в чем проблема у новых ос (и в том числе есть косяки в XP SP3).
    Программы либо вообще не работают, либо вылетают сразу при запуске, либо при подключении к интернетам, либо работают без косяков, но не на всех компьютерах.

    Подскажите пожалуйста, что почитать на эту тему.

    Спасибо.
     
  2. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Вероятно, Вам следует указать под какую систему разрабатывались проги. В идеале, какие функции каких библиотек используют.
     
  3. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Ответа единого нет. Каждый случай нужно рассматривать отдельно.

    Самые распространенные ошибки:
    1. Забывают про права администратора и UAC. К примеру, открывают файлы (ключи реестра и пр.), далее, не проверяя результат - передают хендл следующей функции.
    2. Не учитывают изменения в системных структурах. Особенно этим грешат малварщики, активно пользующие недокумментированные структуры
    3. Некоторые делают у*щную антиотладку. Если малварь, да еще и криптованная - есть шанс напороться на у*щную антиэмуляцию.


    В общем нужно каждую программу отдельно рассматривать под отладчиком
     
  4. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    pas, вообще конечно хотелось бы узнать есть ли общие правила. Но есть и конкретный экземпляр. Программа, простое приложение, использует функции WinInet (вылет бывает именно в момент запроса к сайту). Еще 32-битные иконки из ресурсов лепятся на кнопки через BM_SETIMAGE : ) не думаю, что это какое-то особенное действие. Под Server 2003 работает без проблем, кажется и под XP тоже. Люди под Вистой жалуются, что вылетает. Я видел под 2008 Server вылетела один раз при попытке подключения к сайту, но после одного вылета стала работать без проблем.
     
  5. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Т.е. есть список действий, которые в Vista выполнять нельзя? А что будет, если проверять результат, а он там неправильный, как тогда реестром пользоваться?
     
  6. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Ничего такого вроде бы нет. Программа всего лишь пользуется WinInet, распаковывает с помощью встроенной zlib, парсит внешней pcre3.dll и выводит список результатов.
     
  7. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    При включенном юаке программы будут запускаться под ограниченной учетной записью.
    В таком случае нельзя писать в системную папку, редактировать ветки реестра (HKLM, HKU), открывать системные процессы и процессы, наделенные правами администратора.
     
  8. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    В какую директорию распаковывает?
     
  9. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Спасибо. Переходим на ini

    Все а памяти. GZIP с сайта превращается в нормальный текст, только и всего.
     
  10. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Посмотрел запись в реестр:

    Код (Text):
    1.     if ( RegCreateKey ( HKEY_LOCAL_MACHINE, regPath, &rKey ) == ERROR_SUCCESS)
    2.     {
    3.         RegSetValueEx ( rKey, name, 0, REG_DWORD, (BYTE *)&value, 4);
    4.         RegCloseKey ( rKey );
    5.     }
    Вроде проверяет все как надо. Значит ошибка не из-за этого?
     
  11. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    дальше обращение к ключу идет?
    Что еще делает программа?
    Кинь код.
     
  12. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Код (Text):
    1. в принципе сама программа: http://rghost.ru/563414 - там немного.
    2. код фактически весь. я привел примера SetReg, есть еще и GetReg:
    3. int GetReg ( LPTSTR name, RECT *value )
    4. {
    5.     DWORD regbufsize = sizeof (RECT);
    6.  
    7.     if ( RegOpenKeyEx ( HKEY_LOCAL_MACHINE, regPath, 0, KEY_QUERY_VALUE, &rKey ) == ERROR_SUCCESS )
    8.     {
    9.         if ( RegQueryValueEx ( rKey, name, 0, NULL, (LPBYTE)value, &regbufsize) == ERROR_SUCCESS )
    10.         {
    11.             RegCloseKey(rKey);
    12.             return regbufsize;
    13.         }
    14.         RegCloseKey(rKey);
    15.     }
    16.     return 0;
    17. }
    Обе функции присутствуют несколько раз с разными типами параметров. Внутри все одинаково. Никаких динамически созданных переменных для работы с данными из реестра вроде бы нет.
     
  13. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Ммм
    прога запустилась в общем-тою Полет нормальный.

    Если есть бага - скажи, как воспроизвести.
     
  14. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Как воспроизвести не знаю. Нужен Vista/2008 и, наверное, W7. Иногда вылетала прямо при запуске, иногда при нажатии на старт. Люди пишут например такое:
    Естественно допытаться какая ос невозможно.
     
  15. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Сделай логгирование. Сделай обработку исключений. Все ошибки и экзепшены в лог файл, лог отсылай на сервер. И не будет никаких плясок с бубном.
     
  16. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    TermoSINteZ, все это сделать сложнее, чем основной функционал программы. Кроме того, есть варианты, когда программа вообще не запускается. Я задал вопрос, потому что думал, что есть сборник рекомендаций и конкретных изменений для новых ОС.

    И еще очень большая проблема. Вокруг полно параноиков, и отсыл чего-то на непонятный адрес расценивается как кража паролей. Наверное еще потому, что первая программа со сходной функциональностью переписывала hosts и отправляла людей со всех сайтов, на один (владельцы, которого якобы были не причем). В общем сложно все.
     
  17. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Жесть ;) если это это сложно, то неудивительно, что в основной программе полно багов, удивительно что она запускается и работает хоть где-то :))

    Тем не менее они как то сообщают о том что у них что-то не работает - что мешает грамотно объяснить им что такое лог, особенно если он сделан в текстовой форме.
     
  18. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    provocateur
    Мс вон шлет, гугл шлет. И никто не ругается благим матом.
    Это хорошая практика, высылать логи. И почему на непонятный? У вас нету вашего домена? Сайта\сервера? Что за деревня?
     
  19. provocateur

    provocateur Member

    Публикаций:
    0
    Регистрация:
    5 дек 2006
    Сообщения:
    118
    Попробую еще раз объяснить.

    Была похожая программа, похожа по принципу действия, а не видом. Программу скачало множество людей, более десяти тысяч. Оказалось, что программа меняет файл hosts так, что пользователь не может попасть на несколько сайтов (около десятка) , пользователя всегда выкидывает на один сайт. После этого, такие программы либо вообще не скачивают, либо с огромной лупой изучают, что и куда она отправляет, а поскольку ума у изучателей не всегда достаточно, то любое действие, которое не очевидно для "исследователя" трактуется как кража паролей, продажа родины или снятие денег со счета.

    В любом случае логгирование, как вы предлагаете, ничего не покажет, если программа в принципе не будет запускаться. Я думал, что уже есть общие правила для программ под новые ОС, думал, что мне кто-нибудь даст ссылку на их описание, самому найти не получилось. Мне не нужен совет как собрать информацию об ошибках, мне нужен совет как ошибок избежать, т.к. даже если я буду знать где косяк, то как его исправить вряд ли в логах будет написано.
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Перлы супер :))
    Написать программу которая в принципе не может запуститься это ещё очень постараться надо.
    Ну а когда будешь знать в чём косяк либо альтернативный путь найдёшь либо на крайняк на форуме спросишь.