Показаны сообщения с ярлыком google chrome. Показать все сообщения
Показаны сообщения с ярлыком google chrome. Показать все сообщения

среда, 15 апреля 2015 г.

Google Chrome. Ошибка "Класс не зарегистрирован".

В этом посте я расскажу о том, как исправить ошибку Класс не зарегистрирован при запуске Google Chrome. Возникает она в случаях когда Google Chrome должен запуститься с определенным URL в качестве параметра, т.е. например вы открываете двойным кликом html файл на диске, браузером по-умолчанию при этом у вас установлен Chrome - и получаете ошибку "Класс не зарегистрирован". Такое же поведение может наблюдаться когда, например, вы пытаетесь кликнуть по ссылке в письме, открытом в почтовой программе и т.п. С чем это связано?

Если на ПК устанавливались несколько версий Google Chrome - например, обычная и Canary (dev-версия браузера), и что-то из этого некорректно было удалено, или же, если вы устанавливали user-level версию Google Chrome (которая ставится в папку профиля пользователя, а не в Program Files), а потом вдруг решили установить Google Chrome системного уровня, т.е. запустили установщик от имени администратора - то почти наверняка вы получите эту ошибку. Долгое и вдумчивое чтение интернета по этому поводу может навести на массу решений, но все они "половинчатые". Долго время с пользовался скриптом chromefix.cmd для решения этой проблемы:

reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ChromeHTML\shell\open\command /v DelegateExecute /f
reg delete HKEY_CURRENT_USER\SOFTWARE\Classes\ChromeHTML\shell\open\command /v DelegateExecute /f

Здесь все банально и просто, удаляется ветка DelegateExecute в ChromeHTML и проблема "уходит" до следующей перезагрузки ПК. Но давайте попробуем разобраться чем она вызвана? В параметре DelegateExecute указан CLSID {5C65F4B0-3651-4514-B207-D10CB699B14B} который должен указывать на путь к delegate_execute.exe рабочей версии Google Chrome. У меня Windows 8.1 x64 и Google Chrome системного уровня. Т.е. у меня все что относится к Chrome'у находилось в папке "C:\Program Files (x86)\Google\Chrome\Application\42.0.2311.90" (!) ... Теперь запускаем поиск по имени CLSID в реестре, т.е. просто ищем 5C65F4B0-3651-4514-B207-D10CB699B14B и смотрим внутрь параметра LocalServer32:


Как видно на приведенном скриншоте - в моем случае путь указан правильный. но CLSID {5C65F4B0-3651-4514-B207-D10CB699B14B} находится не только в HKEY_CLASSES_ROOT\Wow6432Node\CLSID\, но и в HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\, и в HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\ ... И вот как раз там я обнаружил старый путь к delegate_execute.exe, который указывал на копию Chrome user-level, т.е. на когда-то находившийся в папке с профилем. Достаточно было заменить все пути в {5C65F4B0-3651-4514-B207-D10CB699B14B}\LocalServer32 на корректный и все стало работать. 

Т.е. общий алгоритм действий такой:

  • Выясняем какой именно Google Chrome у нас стоит, пользовательского уровня или системного. Если системного он должен быть у нас в Program Files, если пользовательского, то в папке с профилем. 
  • Заходим в папку, в ней будут подпапки с версиями, выбираем текущую (последнюю) и копируем этот путь, например, в блокнот, дописывая к нему delegate_execute.exe в конце. Т.е. у меня полностью получилось так - "C:\Program Files (x86)\Google\Chrome\Application\42.0.2311.90\delegate_execute.exe" 
  • Далее запускаем редактор реестра и ищем в нем раздел 5C65F4B0-3651-4514-B207-D10CB699B14B, их может быть несколько, в HKEY_CLASSES_ROOT, в HKEY_CURRENT_USER и т.п. Заходим в каждый из найденных разделов и смотрим внутрь LocalServer32, так, как показано на картинке выше.
  • Как видно, путь к delegate_execute.exe там указан в параметре (По-умолчанию) и в ServerExecutable.
  • Если путь отличается от пути который мы запомнили на первом шаге, то исправляем на верный в двух местах и ищем следующий раздел 5C65F4B0-3651-4514-B207-D10CB699B14B, в котором проводим аналогичную операцию.
  • Повторяем все это до тех пор, пока поиск в реестре не завершится.

Бинго ... Проблема "Класс не зарегистрирован!" в Google Chrome решена.

p.s. Ну и плюсом можете почитать различные Issue в обсуждениях, например вот это - Issue 171355: "Class not registered" error when launching Chrome from AppId related entry point (shortcut or anything to do with default browser)", где обсуждается аналогичная проблема.

воскресенье, 19 октября 2014 г.

Google Chrome 38.0.2125.104 перестал работать после обновления Windows

Сегодня, после установки очередной пачки обновлений под Windows 8 (именно Win8, а не Win 8.1) перестал работать Google Chrome (32-bit). Версия, естественно, была установлена последняя - 38.0.2125.104. Попытка локализовать проблему не увенчалась успехом. Т.е., естественно, были удалены все плагины / расшиерения, затем был удален профиль пользователя, т.е. полностью папка %userprofile%\appdata\local\google, затем произведена полная чистка реестра и переустановка Google Chrome "с нуля". Т.е. фактически чистая установка. Ничего не помогло. При попытке запуска Chrome - видим ситуацию показанную на картинке. Т.е. сначала ошибка "Произошел сбой Google Chorme. Перезапусить?", ну а затем стандартное виндовое сообщение о том что программа не работает. Честно говоря - перепробовал все что можно. Кстати, в релиз ведь вышла 64-битная версия Chrome - попробовал установить ее. Так вот 64-bit'ный Chrome  запускался, но работать отказывался. Т.е. появлялось окно с Google Chrome, но при попытке зайти, например, в настройки, т.е. chrome://settings - ничего не происходило. В качестве временного решения была предпринята установка Chrome Canary, версия 40.0.2193.0 canary - заработала без сбоев.


Интересны отзывы других пользователей. А у вас после последних обновлений Windows последний Chrome нормально работает? Ситуация может быть специфической, т.е. у части пользователей может не работать, как у меня, у части работать. Но как-то локализовать проблему все-таки нужно. Пока пользуюсь Canary, если удастся "победить" проблему с обычным Chrome - обязательно отпишусь.

среда, 3 сентября 2014 г.

Google Chrome 37. Отображение шрифтов.

Судя по всему 26 августа 2014 г. состоялся выход Google Chrome 37, который для многих пользователей, у которых отключено автообновление браузера остался незамеченным. Выпуск Chrome 37 принес большое количество изменений и нововведений, основное из которых - поддержка DirectWrite для рендеринга шрифтов. Сегодня я тоже решил обновиться до 37-го релиза, однако, список изменений я не читал. После обновления - удивился, т.к. многие часто посещаемые сайты стали выглядеть как-то по-другому (установленная версия 37.0.2062.103). Нововведение - это хорошо, однако, новое отображение шрифтов мне категорически не понравилось, поэтому я стал искать способ отключить его. А способ довольно простой: заходим в chrome://flags/ , там находим опцию Отключить DirectWrite и нажимаем на пункт Включить. После чего перезапускаем браузер и все ваши сайты выглядят как и прежде. Кому лень искать - вот прямая ссылка на эту настройку: chrome://flags/#disable-direct-write ...