Software patches |
Добро пожаловать, гость ( Вход | Регистрация )
Software patches |
-=CHE@TER=- |
Oct 23 2010, 16:18
Сообщение
#1
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
ACDSee 5.0.0.0025 PowerPack (2002)
Disable database and Windows 7 compatability patch Отключение IDBSvr.exe и БД изображений Пользуюсь с незапамятных времён этой версией ACDSee. Тут нет огромного количества ненужных свистопыхтелок (или по крайней мере большую часть из них можно отключить или скрыть) которые наводнили другие версии этой программы. Зато всё остальное представлено в полном объёме. Единственная проблема, которую не удалось отключить штатными средствами - это опухание БД с изображениями. Дело в том что ACDSee для быстроты работы делает превью изображений и сохраняет их в свою БД. Последняя, в свою очередь, со временем пухнет всё больше и больше что мне на системном диске как бы нафиг не надо. Ещё, как выяснилось, программа не дружит с многоядерными процессорами и разваливается на них. И, наконец, при попытке открыть каталог содержащий .LNK или .URL файл с длинным адресом программа сразу падает. В общем решение всех проблем такое: 1) Отучаем ACDSee запускать свою БД. Для этого меняем в файле: C:\Program Files\ACD Systems\ACDSee\5.0\ACDSee5.exe ; uni-processor patch ; запускать только на 1 ядре 00000167: 01 -> 41 ; disable IDBSvr database service ; отключаем сервис базы данных изображений 000175D5: 86 -> AE 000175F2: 86 -> AE 0001760E: 29 -> 00 0001761B: 74 -> EB 0001761C: 08 -> 1B 0001B7E7: E8 -> B8 0001B7E8: 74 -> 00 0001B7E9: 8A -> 00 ; fix long URL crash - disable .LNK/.URL handling ; исправляем падение при длинных URL - отключаем их обработку 001E94E4: 2E -> 00 001EA254: 2E -> 00 2) Удаляем всё из каталога: C:\Documents and Settings\%USERNAME%\Application Data\ACD Systems\ После всего этого ACDSee даже быстрее стартует (на глаз), т.к. нет необходимости дожидаться загрузки "IDBSvr.exe", её .DLL, БД и прочего мусора. |
-=CHE@TER=- |
Mar 6 2016, 05:57
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Продублирую тут своё сообщение из другой темы.
У меня стоят несколько плагинов для FAR Manager, в том числе и Calculator v3.0 by Cail Lomecb © 1998-2001 (calc). Калькулятор этот при всех достоинствах адово часто падает, если в выражении встречается буква "e" (экспоненциальная запись числа). Сам я этой функцией редко пользуюсь, а вот если в шестнадцатеричном числе встретилась такая буква, а после неё ещё и цифра - всё, труба. Что заметил, если запустить FAR и сразу запустить калькулятор вбив туда "9e999", то результат будет "1.#INF" (как и должно). А если сначала открыть любой файл на редактирование (перед этим colorer выводит окно "just wait - i'm realoading..."), то после этого упомянутое выше выражение будет приводить к обвалу калькулятора. Иногда, кстати, и colorer обваливается тоже, но при каких условиях сказать затрудняюсь, ибо это редко происходит. Так вот! Если в каком-нибудь плагине вызвать: CODE Set8087CW($133F); // Delphi То калькулятор валиться перестанет._control87(0x133F, 0x133F); // C++ #include <float.h> Это команды для управления математическим сопроцессором отключающие ошибки вычисления. Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 1 По всей видимости colorer за каким-то чёртом меняет флаги сопроцессора (кстати говоря, их даже некоторые функции WinAPI меняют типа CreateWindow() - см. исходные коды Delphi 7 - они там все такие функции оборачивают с сохранением до и восстановлением флагов после вызова). Немного подумав, я пришёл к выводу что можно, в качестве костыля, отключить в калькуляторе ошибки вычисления таким макаром. Решил поглядеть исходные коды Delphi 7 у обозначенной команды чтобы знать какой код вставлять: CODE procedure Set8087CW(NewCW: Word); Опа-опа-опа! FNCLEX сбрасывает уже накопленные ошибки и только после этого FLDCW загружает новые флаги. Собственно, на FLDCW плагин calc и валился (их там даже два подряд):begin Default8087CW := NewCW; asm FNCLEX // don't raise pending exceptions enabled by the new flags {$IFDEF PIC} MOV EAX,[EBX].OFFSET Default8087CW FLDCW [EAX] {$ELSE} FLDCW Default8087CW {$ENDIF} end; end; CODE ; calc.dll:00009EC4 По сути, всё что нужно - это всунуть инструкцию fnclex (2 байта) перед fistp. Т.к. после этой процедуры есть выравнивающие байты, то я просто сдвинул код:push ebp mov ebp, esp add esp, -00Ch fstcw [ebp][-02] fwait mov ax, [ebp][-02] or ah, 00Ch mov [ebp][-04], ax fldcw [ebp][-04] fistp q,[ebp][-0C] fldcw [ebp][-02]; <-- exception here mov eax,[ebp][-0C] mov edx,[ebp][-08] leave retn QUOTE ; version info: После чего калькулятор наконец-то перестал валиться.; 100864 bytes ; 2001.05.02 14:10:44 ; FAR Manager Calculator v3.0 ; Cail Lomecb © 1998-2001 CALC.DLL 00009EE0: D9 DB 00009EE1: 6D E2 00009EE2: FE D9 00009EE3: 8B 6D 00009EE4: 45 FE 00009EE5: F4 8B 00009EE6: 8B 45 00009EE7: 55 F4 00009EE8: F8 8B 00009EE9: C9 55 00009EEA: C3 F8 00009EEB: CC C9 00009EEC: CC C3 |
Упрощённая версия | Сейчас: 26th December 2024 - 18:16 |