Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Исчезают иконки в трее в Windows 7

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В shell32.dll. В х64 системах есть папка system32, а есть SysWOW64.
 
http://i80.fastpic.ru/big/2016/0416/ae/785c074dd493e6badba95a4e50952fae.png

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 13:29 16-04-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV

Цитата:
В shell32.dll. В х64 системах есть папка system32, а есть SysWOW64.  

Это понятно)
 
С х86 вроде всё ясно, с х64 может я что-то торможу, или не так делаю.. но если я правильно понимаю и это тут (shell32.dll 6.1.7601.23338)
x86

x64

 
то в итоге получается следующая замена:
x86 (1faf8)
FF FF 50 68 58 1B 00 00 6A 0B 8D 85 C0 E9 FF FF
FF FF 50 68 60 EA 00 00 6A 09 8D 85 C0 E9 FF FF
 
x64 (1d8c9)
c7 44 24 28 58 1b 00 00 c7 44 24 20 0b 00 00 00
c7 44 24 28 60 EA 00 00 c7 44 24 20 09 00 00 00
 
Что делает замена fuFlags c 0Bh на 09h?

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 22:32 18-04-2016 | Исправлено: MOHCTP, 02:08 19-04-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Давайте по порядку. В х64 системах есть папка system32 и есть папка SysWow64
http://stackoverflow.com/questions/949959/why-do-64-bit-dlls-go-to-system32-and-32-bit-dlls-to-syswow64-on-64-bit-windows
Открываем свойства shell32.dll в system32 и смотрим версию файла. Видим 6.1.7601.19135 (у меня сейчас)
Открываем свойства shell32.dll в SysWOW64 и видим 6.1.7601.19135
Смотрим через поиск (использую Everything) и видим что последняя версия shell32 6.1.7601.23338
Убедится что используется именно 19135 версия можно и через Hardlink Scanner (https://james-ross.co.uk/weblog/2008/10/31/01)
C:\Windows\system32\shell32.dll = C:\Windows\winsxs\amd64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.19135_none_ca3a5b9728ab07df
C:\Windows\SysWOW64\shell32.dll = C:\Windows\winsxs\wow64_microsoft-windows-shell32_31bf3856ad364e35_6.1.7601.19135_none_d48f05e95d0bc9da
Открываем первый файл в system32 и смотрим что там нет похожих участков кода
Отркываем второй и видим все тот же кусок кода, что я давал выше уже.
fuFlags детально расписано тут: https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
замена 0Bh на 09h выключает SMTO_ABORTIFHUNG флаг
Надеюсь, все понятно расписал. Если где ошибся сам, то жду исправлений )

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 02:45 19-04-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV

Цитата:
Давайте по порядку. В х64 системах есть папка system32 и есть папка SysWow64

Понятно) То я неточно, написал) просто shell32.dll из SysWOW64 в 64-битной совпадает с таковым в 32-битной с-ме, потому я собирательно имел ввиду shell32 x86 = system32 в win7x86 = SysWOW64 в win7x64, а shell32 x64 = system32 в win7x64); то, что всё это hardlink (C:\Windows\winsxs\..), тоже понятно)

Цитата:
Видим 6.1.7601.19135

просто я использую LDR-ветку, там shell32 сейчас 6.1.7601.23338

Цитата:
fuFlags детально расписано тут: https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
замена 0Bh на 09h выключает SMTO_ABORTIFHUNG флаг  

То, что отключаем SMTO_ABORTIFHUNG флаг, по аналогии с ХР, понятно; просто чего-то туплю, там написано - SMTO_ABORTIFHUNG 0x0002, мы меняем 0b -> 09? (т.е. остаются SMTO_BLOCK 0x0001, SMTO_NORMAL 0x0000, SMTO_NOTIMEOUTIFNOTHUNG 0x0008?)
 
Добавлено:
посмотрел 6.1.7601.19135, по идее всё также, только адреса другие:
 
для shell32.dll x86, из system32 в win7x86 или из SysWOW64 в win7x64 (1f710)
FF FF 50 68 58 1B 00 00 6A 0B 8D 85 C0 E9 FF FF
FF FF 50 68 60 EA 00 00 6A 09 8D 85 C0 E9 FF FF
 
для shell32.dll x64, из system32 в win7x64 (1d575)
c7 44 24 28 58 1b 00 00 c7 44 24 20 0b 00 00 00
c7 44 24 28 60 EA 00 00 c7 44 24 20 09 00 00 00

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 03:27 19-04-2016 | Исправлено: MOHCTP, 04:23 19-04-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почти неделя тестов на семи разных рабочих системах (32/64) патченых shell32 показывает работоспособность патча, все "иконочные костыли" убрал, с иконками всё ок.

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 04:45 25-04-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще бы кто патчер создал, который автоматом находит нужный кусок и патчит сам. Можно вообще в виде проги на автозагрузке сделать и проверять на изменения кода после обновлений и, если изменено обратно, то патчить заново.

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 11:21 25-04-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV
простенький патчер сделать не сложно, посмотрим, чуть позже)

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 18:04 25-04-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как и обещал (#), простенький патчик windows 7 x86&x64 shell32.dll, пока только для тестирования у меня работает на последней версии 6.1.7601.23418

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 03:25 19-05-2016 | Исправлено: MOHCTP, 03:26 19-05-2016
GEGEMON



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MOHCTP

Цитата:
Как и обещал (#), простенький патчик  

 
какие задачи выполняет патч?  а то тут hex'а и слов ругательных много и ничего не понятно
 

Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 08:23 19-05-2016
sw73

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Denn29 спасибо

Всего записей: 2 | Зарегистр. 01-01-2016 | Отправлено: 14:38 19-05-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV
(#) простенький патчик windows 7 x86&x64 shell32.dll, пока ТОЛЬКО для тестирования Исправил несколько неточностей и переделал уни x86&x64.
 
 
 
Добавлено:
GEGEMON
Исправляет глобальную ошибку TIMEOUT в файле shell32.dll, которая приводит к непрорисовке иконок при загрузке системы)

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 20:40 20-05-2016 | Исправлено: MOHCTP, 20:43 20-05-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Позже потестирую на х86 и х64 патч. Хотя, думаю, если пропатчит нормально, то дальше должно быть все ок =)

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 20:50 20-05-2016
GEGEMON



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MOHCTP
 
у меня так -  
 

Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 22:52 20-05-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GEGEMON, у тебя нет прав на файл shell32.dll в папке system32
Аналогично, нужны будут права на shell32.dll в папке SysWow64 для х64 системы.
Можно этим воспользоваться: http://winaero.com/comment.php?comment.news.18
Через контекстное меню удобно пользоваться и восстанавливать прежние.
Да и патч еще в тестовом режиме и я не помню делаются ли бэкапы, так что тоже не помешает на всякий случай.

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 23:02 20-05-2016
GEGEMON



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV
установил полный доступ к файлу, запускаю патч - не видит (ищет в папке wow64 хотя версия х86 и патч для х86). Ладно, соглашаюсь на поиск, нахожу запускаю - опять не видит!!  
 
MOHCTP
 
Короче "Пилите Шура"

Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 10:01 21-05-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тестируйте: https://www.dropbox.com/s/bbzz67y512gkzn0/Win7x86-64%20missing%20icons%20bug%20patcher-unpatcher%20shell32%20dll.rar?dl=0
 
Для правильной работы патча должны быть права на чтение и запись у обоих файлов shell32.dll в папках %windir%\system32 и %windir%\SysWOW64 иначе будет вылет патчера
 
Unpatcher'ы это всего лишь патчер на стандартные значения shell32.dll. Можно ими вернуть все как было, а можно и бэкапом вида shell32.dll.BAK вручную.

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 16:09 21-05-2016 | Исправлено: ABVBAV, 16:29 21-05-2016
GEGEMON



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Тестируйте

 
битый архив

Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 21:59 21-05-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал еще раз сам, проверил, все ок. Создавалось WinRAR версии 5.31. Насколько понимаю, должен быть не ниже 5 версии у вас.  Перезалил в zip еще на всякий: https://www.dropbox.com/s/l9svhgdl9o3ggeb/Win7x86-64%20missing%20icons%20bug%20patcher-unpatcher%20shell32.zip?dl=0
Оба архива в норме

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 10:45 22-05-2016
MOHCTP

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ABVBAV
(#) простенький патчик windows 7 x86&x64 shell32.dll, пока ТОЛЬКО для тестирования
Немного доделал уни x86&x64 (добавлена чистка кэша иконок в реестре и на диске).
В архиве 3 патча:
x86 - только для 32-битной shell32.dll из \system32 в 32-битной системе, или из \syswow64 в 64 битной;
x64 - только для 64-битной shell32.dll  из \system32 в 64 битной;
x86-x64 - универсальный, для Windows 7 32/64 битной
 
 
Добавлено:
GEGEMON

Цитата:
установил полный доступ к файлу, запускаю патч - не видит (ищет в папке wow64 хотя версия х86 и патч для х86). Ладно, соглашаюсь на поиск, нахожу запускаю - опять не видит!!

Если запускался x86 патч, то по идее так и должно быть: он патчит только 32-битный shell32.dll, который может находится в \system32 в 32-битной системе, или в \syswow64 в 64 битной; проверьте, возможно что файл пропатчился) или попробуйте уни-патч. Возможно у вас остался файл shell32.dll.tmp (это оригинальный) - переименуйте его, например в shell32.dll.1: патчер использует переименование для изменения файла который используется системой. В любом случае патчер выводит лог своих действий и результатов. Если патчер не срабатывает, приведите лог.

Всего записей: 510 | Зарегистр. 12-03-2003 | Отправлено: 04:02 23-05-2016 | Исправлено: MOHCTP, 05:39 23-05-2016
ABVBAV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
x86 - только для 32-битной shell32.dll из \system32 в 32-битной системе, или из \syswow64 в 64 битной;
x64 - только для 64-битной shell32.dll  из \system32 в 64 битной;
x86-x64 - универсальный, для Windows 7 32/64 битной

Как по мне, то такая система версий только запутает обычного пользователя и таким пользователям не важно знать все технические подробности и патчить отдельно shell32.dll только в syswow64 для х64 систем.
У меня там лишь два варианта патча. Один для х86 (причем проверяет что это именно Win7 х86 система стоит), а второй для х64 и патчит оба файла сразу. Не знаю как вам, а мне так логичнее. Считайте это альтернативным вариантом патча. Позже, подумаю, как прикрутить к самому патчеру еще и автоматическое получение прав на файлы, с последующим восстановлением оригинальных прав, чтобы все это можно было делать даже полному новичку.

Всего записей: 16 | Зарегистр. 12-12-2015 | Отправлено: 20:21 23-05-2016 | Исправлено: ABVBAV, 20:22 23-05-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Исчезают иконки в трее в Windows 7


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru