Light-electric.com

IT Журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Хост процесс rundll32 что это

Процесс rundll32.exe – зачем нужен и как его отключить

Система Windows использует одновременно множество файлов, так как является многозадачной и запускает много фоновых служб. И каждое запущенное приложение также использует не только свои собственные файлы, но и функции системы, которые содержатся в файлах с расширением dll и называются библиотеками. В них запрограммированы определённые алгоритмы, которыми активно пользуются программисты. Это сильно облегчает использование возможностей системы и ускоряет разработку программ. Кстати, именно поэтому некоторые программы могут не работать на других версиях Windows – потому что в них нет нужных библиотек.

Работа с процессом rundll32.exe.

За что отвечает rundll32.exe

Если нажать клавиши Ctrl+Alt+Delete и перейти в диспетчер задач, то на вкладке «Службы» можно обнаружить множество запущенных процессов, которые работают в данный момент. Среди них найдётся и rundll32.exe, но что это такое? Многие почему-то считают его отдельным приложением, причём вредоносным. Вероятно, потому что в случае многих возникающих системных сбоев появляется сообщение с упоминанием этой службы. На самом деле хост-процесс Windows под названием rundll32 необходим для подключения в нужный момент нужных библиотек dll. Сами по себе они не являются исполняемыми, а содержат лишь некие алгоритмы. Делается это по требованию системы или разных приложений. Он как бы отыскивает и предоставляет доступ к нужным функциям тем программам, которым они требуются. Появление ошибки с упоминанием этого процесса чаще всего означает, что нужной библиотеки не нашлось. Это бывает из-за разных причин, в том числе и неправильно установленной программы.

Теперь вы знаете, что это за процесс. Также следует знать, что он не всегда необходим, так как срабатывает лишь при необходимости. Но иногда он прописывается в автозагрузке и стартует вместе с системой, что не всегда нужно, но создаёт лишнюю нагрузку и расходует память. Причём запускается он не сам по себе, а посредством какой-нибудь программы – если её отключить, то и rundll32.exe тоже не будет запускаться.

Месторасположение

Файл rundll32.exe располагается в папке установленной системы Windows, в поддиректории System32, если система 32-битная, или в SysWOW64 в случае 64-битной. Но иногда можно обнаружить, что запущенная служба с таким же именем находится в другой папке, иногда вообще за пределами системы – это вредоносная программа, которую просто маскируют под распространённую службу. Если такая обнаружена, нужно немедленно её остановить и проверить компьютер антивирусом. Точно узнать, из какого места запускается этот файл, несложно. Всю информацию может показать, например, приложение Process Explorer, которую можно скачать с сайта Microsoft. Оно выводит список всех фоновых процессов и подробную информацию по любому из них.

Ошибки со ссылкой на процесс rundll32.exe

Иногда можно увидеть сообщение об ошибке такого типа «Windows cannot find C:WindowsRundll32.exe. Make sure you typed the name correctly and try again». Это значит, что система не обнаружила rundll32.exe. Если такое случилось, это повод немедленно проверить компьютер антивирусом. Решить же проблему с отсутствующим файлом поможет диск или флешка с системой Windows. Действовать нужно по инструкции, которая появится при ошибке. Отсутствующий файл найдётся в дистрибутиве и скопируется в системную папку. Исправить проблему с rundll32.exe поможет и программа DLL Suite, которую несложно найти в Интернете. Она просканирует системные папки и найдёт все проблемы с библиотеками. В том числе это приложение проверяет наличие файла rundll32.exe, и при необходимости может скачать его официальную версию.

Как отключить процесс rundll32 в Windows

Как правило, этот процесс запускается не самостоятельно, а только вместе с какой-либо программой, которой требуется доступ к сторонним библиотекам. Чтобы отключить его, сначала нужно завершить работу этой программы, что не всегда просто, так как это может быть и драйвер какого-либо устройства. Выявить её поможет Process Explorer – эта утилита покажет, какое приложение запускает этот процесс. После этого действия несколько отличаются в зависимости от версии Windows. В 7 версии введите команду msconfig в командной строке и появится окно с вкладкой «Автозагрузка». Там нужно отключить приложение, которое и запускает нежелательный процесс. После перезагрузки его не должно быть в списке запущенных. В Windows 8 и 10 в Панели управления есть пункт «Автозагрузка», где можно сделать то же самое. Но помните: если отключить хост-процесс rundll32 в Windows, он всё равно запустится, когда в этом возникнет необходимость.

Как удалить rundll32.exe совсем? Это можно сделать, хотя и с трудом, так как Windows защищает системные файлы от удаления. Простейший способ обойти это – загрузиться с диск или флешки, а потом можно удалять что угодно. Но делать этого не нужно. Такой шаг повлечёт за собой множество проблем с самыми разными приложениями, в том числе с драйверами устройств, система станет нестабильной, будет часто показывать сообщение об ошибке, а некоторые программы перестанут работать. Безопасно, и даже полезно удалять этот файл, если он на самом деле вредоносный, маскирующийся под настоящий. Но свежий антивирус, скорее всего, выявит его сам и предупредит вас об этом.

Процесс «rundll32.exe»: что за процесс и можно ли его отключить?

Читайте о том, какие функции на самом деле выполняет «rundll32.exe», и почему их так много работает одновременно.

За что отвечает «rundll32.exe»?

Если вы работали в операционной системе Windows в течение некоторого времени, то обязательно видели тонны файлов с расширением «*.dll» (Dynamic Link Library) в каждом каталоге с установленным ПО. Они используются для хранения общих частей логики программных функций, к которым можно получить доступ из любого приложения.

Поскольку «DLL-файлы» не являются исполняемыми сами по себе, то стандартное системное приложение «rundll32.exe» используется для подключения и запуска функций, хранящихся в этих файлах. Этот исполняемый файл является неотъемлемой частью ОС Windows и не может представлять угрозу для вашего ПК.

Примечание: сам исполняемый файл обычно располагается в каталоге «С:WindowsSystem32rundll32.exe». Были замечены случаи, когда вредоносное программное обеспечение использует имя этого файла и пытается запустить его из другого каталога, чтобы замаскироваться. Если у вас возникли подозрения, то проведите полное сканирование системы с помощью антивирусного ПО, но мы можем точно узнать что происходит.

Проведем исследование с программой «Process Explorer» для Windows 10, 8, 7, Vista и т. д.

Вместо использования стандартного «Диспетчера задач», мы установим бесплатную утилиту «Process Explorer» от «Microsoft», чтобы выяснить что происходит на самом деле. Скачать эту утилиту можно на официальном веб-сайте компании «Microsoft», просто перейдите по ссылке:

Вы скачаете «ProcessExplorer.zip», разархивируйте архив и запустите файл «procexp.exe» если вы работаете на ОС Windows x86, или «procexp64.exe» если ваша система х64. Выбираем в меню «File» – > «Show Details for All Processes», для того чтобы увидеть все запущенные процессы.

Теперь, когда вы наведете курсор мыши на любой процесс в списке, выпадет всплывающая подсказка с описанием данного процесса.

Читать еще:  Домен на английском

Или можно щелкнуть правой кнопкой мыши по процессу и выбрать «Properties», чтобы увидеть всю доступную информацию о нем. На вкладке «Image» можно проверить полный путь к исполняемому файлу, а также узнать родительский процесс (поле «Parent»), который в этом случае является командной строкой Windows (cmd.exe ).

Также можно узнать все сведения о данном файле, как и в «Диспетчере задач».

Как отключить процесс Rundll32 в Windows 7?

В большинстве случаев данный процесс не нужно отключать, но если это потребуется, то вам понадобится завершить родительский процесс, который запустил эту утилиту. В данном конкретном случае нужно завершить процесс «cmd.exe». Это легко можно сделать в «Диспетчере задач», откройте его, найдите процесс «cmd.exe», щелкните правой кнопкой мыши на нём и выберите пункт «Снять задачу».

Если же «rundll32.exe» запустила какая-то служба, то необходимо в строке поиска Windows ввести «msconfig.exe» или в меню «Пуск» – > «Выполнить», найдите по названию нужную службу (название можно найти в свойствах процесса Process Explorer). И просто снимите флажок, чтобы она не запускалась автоматически.

Иногда «rundll32.exe» фактически не имеет родительского процесса (он не отображается в свойствах процесса), и в этом случае вам придется выяснять откуда именно он был запущен. Например, если вы откроете «Свойства экрана» в операционной системе Windows XP, то, запустив «Диспетчер задач», увидите еще один процесс «rundll32.exe» в списке, потому что эта версия ОС сама использует «rundll32.exe» для запуска этого диалога.

Отключение «rundll32.exe» в Windows 8 или 10

В Windows 8 или 10, чтобы завершить выполнение родительского процесса, также открываете «Диспетчер задач», выделяете процесс и жмёте «Снять задачу».

Для отключения приложения, которое запускается автоматически при перезагрузке Windows и является родительским процессом для «rundll32.exe», необходимо открыть «Диспетчер задач» и перейти на вкладку «Автозагрузка», чтобы отключить его. Потом перезагрузите компьютер, и этого приложения как не бывало.

Интересные фишки Диспетчера задач Windows 7 и Vista

Одной из замечательных особенностей «Диспетчера задач» в Windows 7 или Vista является возможность увидеть полную информацию для любого запущенного процесса. Например, можно убедится, что в моем списке есть два процесса «rundll32.exe»:

Перейдите во вкладку главного меню «Вид» – > «Выбрать столбцы», в появившемся списке найдите опцию «Командная строка», и поставьте галочку напротив неё.

Теперь можно увидеть название исполняемого процесса и полный путь к файлу (не всегда), и аргумент – это и есть DLL-файл, он фактически является тем куском кода, который именно выполняется в данный момент.

Теперь нужно посмотреть в каком каталоге находится сам подключаемый модуль, запускаем поиск на ПК по названию, в нашем примере это «shwebsvc.dll».

Кликаем правой кнопкой мыши и выбираем «Свойства», после чего переходим на вкладку «Подробно». В описании файла сказано, что это компонент «Веб-службы оболочки Windows», авторское право принадлежит компании Microsoft. Следовательно, этот процесс не нужно завершать, так как он является частью операционной системы.

То есть, когда вы узнали, какой именно файл подключает «rundll32.com», и какой системный процесс его запустил, то сами будете решать нужен он вам или нет. Если вы не смогли найти информацию о подключаемой библиотеке, то всегда можно воспользоваться «Google» и найти ответ.

Если и так вы ничего не нашли, то мы очень рекомендуем сделать полное сканирование системы с помощью вашего антивируса. Как вариант, задайте вопрос на каком-либо специализированном форуме, возможно кто-то уже встречался с подобной проблемой и может дать вам дельный совет.

Rundll32.exe грузит систему Windows

Те, кто регулярно работает в операционной системы Windows, могли обращать внимание, на тот факт, что основную массу файлов операционной системы занимают файлы в формате * .dll (Dynamic Link Library).

Эти файлы могут быть расположены в каждой папке приложения, и используются для хранения фрагментов логики приложения, кроме того эти библиотеки могут быть доступны из разных приложений.

Как правило нет никакого способа непосредственного запуска файлов DLL. Для этого в операционной системы Windows используется rundll32.exe приложение, которое выполняется запуск функций, хранящейся в общих DLL-файлах. Этот исполняемый файл является неотъемлемой частью Windows, и, как правило, не должен быть угрозой.

Примечание: исполняемый файл обычно находится в каталоге:

Но иногда шпионское программное обеспечение использует такое же имя файла (rundll32.exe) и/или запускается из другой директории для того, чтобы замаскировать себя. Если есть подозрение, что выполняются неизвестные программы, то необходимо выполнить детальную проверку запускаемых процессов, чтобы убедиться в правомерности запускаемого программного обеспечения.

Здесь стоит обратить внимание на тот факт, что зачастую используется системный файл rundll32.exe, но при этом запускаемые им библиотеки, могут быть неизвестного происхождения, что бывает не так очевидно при первом взгляде на процессы в диспетчере задач Windows.

Вместо того чтобы использовать Task Manager (стандартный диспетчер задач), мы скачаем бесплатную утилиту Process Explorer, разработанную Марком Руссиновичем и опубликованную на сайте Microsoft ( https://technet.microsoft.com/ru-ru/sysinternals/processexplorer.aspx ), чтобы выяснить, что происходит. Утилита имеет ряд преимуществ по сравнению со стандартной версией и является лучшим выбором для любой работы по устранению неполадок.

Просто запустите программу Process Explorer, далее в главном меню необходимо выбрать пункт File –> Show Details for All Processes, для отображения детальной информации о процессах. Скриншот ниже.

Теперь, когда вы наведите курсор мыши на rundll32.exe в списке процессов, вы увидите всплывающую подсказку с подробностями о том, что это на самом деле:

Или же вы можете щелкнуть правой кнопкой мыши, выберите Properties (Свойства), а затем посмотрите на вкладке Image, чтобы увидеть полный путь к файлу, который в настоящее время запущен, и вы даже можете увидеть процесс Родитель, который в данном случае является оболочкой для Windows (explorer.exe ), что свидетельствует о том, что он, вероятно, запускается с ярлыка или из раздела автозапуска.

В конце этой статьи можно просмотреть сведения о файле так же, как мы это делали в разделе менеджера задач выше. В моем случае файл — это часть панели управления NVIDIA, и поэтому я не собираюсь ничего с ним делать.

Как отключить процесс Rundll32 (Windows 7)

Для отключения процесса в операционной системе Windows 7, достаточно запустить из командной строки утилиту msconfig.exe.

Далее необходимо перейти к вкладке Startup (Автозагрузка) и далее найти нужный процесс в колонке Command , которая должна быть такой же, как поле «Командная строка» в окне Process Explorer.

Просто снимите флажок, чтобы предотвратить его автоматический запуск при следующей загрузке системы.

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

Об использовании сторонней утилиты, для поиска проблемных файлов автозапуска, я напишу в завершении этой статьи.

Как отключить процесс Rundll32 (Windows 8 или 10)

Если вы используете Windows 8 или 10, вы можете использовать раздел Автозагрузка диспетчера задач, для проверки состояния и отключения приложений, выполняющих запуску при загрузке операционной системы.

Читать еще:  Как прописать dns для домена

Использование диспетчера задач (Windows 7)

Одной из главных особенностей диспетчера задач (Task Manager ) в Windows 7 или Vista, является возможность видеть полную командную строку для любого запущенного приложения. Например, вы увидите, что у меня есть два процесса rundll32.exe в моем списке задач на скриншоте ниже:

Если мы перейдем в ВидВыбор столбцов (ViewSelect columns), то в списке колонок увидим опцию «Командная строка» (Command Line), который хотим увидеть в диспетчере задач, ставим соответствующую галочку.

Теперь в диспетчере задач можно увидеть полный путь к файлу в отдельной колонке. Это правильный путь для rundll32.exe в каталоге System32, а его аргумент путь к другой DLL, которая на самом деле работает в настоящий момент.

Если навести курсор мыши, то отобразится полный путь к файлу. Можно пойти по этому пути и убедится, в том что библиотека *.dll запущенная c помощью rundll32.exe действительно принадлежит программе которую мы устанавливали ранее в системе.

Можно открыть Свойства библиотеки и посмотреть на детали

В противном случае, вы можете открыть Свойства и посмотреть на вкладке Подробно (Details) информацию о разработчике этого файла. Скриншот ниже.

Выяснив эти детали можно понять, стоит исключать данную библиотеку из автозагрузки или нет. Если вы не в курсе что это за библиотека, то в этом вам поможет Google.

Использование диспетчера задач (Windows 10)

Тем же функционалом, который присутствует в диспетчере задач в Windows 7 можно воспользоваться и в диспетчере задач в Windows 10.

Для подробного отображения сведений о текущих запущенных процессах, необходимо в диспетчере задач перейти во вкладку «Подробности«.

Для того, чтобы отображался столбец «Командная строка«, необходимо щелкнуть правой кнопкой мыши по соседнему столбцу и в контекстном меню пункт «Выбрать столбцы», далее в списке необходимо выбрать пункт «Командная строка«, поставить галочку и нажать Ок. Результат представлен на скриншоте выше.

AnVir Task Manager

В завершении рассмотрения программ, обеспечивающих поиск неуставного программного обеспечения, нельзя не обратить внимание на еще один бесплатный, но полезный продукт AnVir Task Manager, который обладает следующими функциями:

  • Управление автозагрузкой, запущенными процессами, сервисами и драйверами,
  • Обнаружение и удаление вирусов и шпионов, блокирование попыток заразить систему,
  • Может заменять стандартный Диспетчера Задач.

Данная программа доступна для загрузки с сайта http://www.anvir.net . Одной из особенность AnVir является поиск всего автоматически запускаемого программного обеспечения в операционной системе Windows. В главном окне программы показаны названия процессов, степень их риска, где определен механизм автозапуска (например в реестре или в качестве системного сервиса), указана информация о разработчике, и путь к файлу.

Как правило из всего программного обеспечения указанного выше, в части управления процессами, AnVir можно считать лидером. AnVir обладает не только удобным в т.ч. русскоязычным интерфейсом, ни позволяем достаточно гибко управляем процессами запуска различного ПО. Поэтому при исследовании запущеных процессов, я бы рекомендвоал начинать с AnVir , и потом в дополнение использовать Process Explorer.

Почему rundll32.exe грузит процессор

Множество процессов вашего компьютера могут грузить CPU: одни делают это обоснованно, используя его мощность для обеспечения работы ресурсоёмких приложений, другие же впустую нагревают процессор, при этом некоторый софт может быть ещё и вредоносным. Одним из ярких примеров таких процессов является rundll32.exe, причины нагрузки ЦПУ которым, и возможные пути решения подобных ситуаций мы рассмотрим далее в статье.

Почему rundll32.exe нагружает систему

Сам процесс не является изначально шпионским (если не учитывать сбор данных о телеметрии самой Windows) или как-то иначе вредящим. Это системное приложение, отвечающее за несколько функций, связанных с поиском информации в интернете. Когда системе не удаётся найти запрашиваемую информацию в сети или же она подаётся некорректно, тогда приложение не прекращает поиск и начинает искать ещё усерднее, требуя всё больше и больше ресурсов для своей работы. Таково обобщённое описание корня проблем с данным процессом.

Причина 1: Предложение обновления до Windows 10

Чаще всего от нагрузки CPU упомянутым процессом страдают пользователи Windows 7, так как в «семёрке» rundll32 призван связываться с серверами Microsoft, в том числе для обеспечения возможности обновиться до Windows 10. Потому из-за многих сопутствующих причин вроде некачественного интернет-соединения или проблем на серверах компании, некорректных данных настроек процесс может работать неэффективно, впустую нагружая ЦПУ. Путей решения возникшей сложности два: обновление (переход) до Windows 10 и отключение соответствующей службы. Рекомендуем вам обновиться до «десятки», используя стандартные возможности Windows 7, или же сделать это вручную.

Если же вы не захотите обновляться, есть менее радикальное решение: нужно отключить работу службы, отвечающей за переход с одной версии ОС на другую. Для этого:

    Откройте «Планировщик заданий» через поиск панели «Пуск». При возможности рекомендуем сделать «Запуск имени администратора» во избежание конфликтов с правами.

Последовательно щёлкните левой кнопкой мыши по таким строкам: «Библиотека планировщика заданий» >«Windows» >«Application Experience» >«Microsoft Compatibility Appraiser» и вначале нажмите на «Завершить», а потом на «Отключить».

Возможно, у вас затребуют подтверждение производимых изменений. В таком случае не переживайте и нажмите «Да», так как этот файл не является критически необходимым для ОС.

Пусть вас не смущает, что алгоритм показан на примере Виндовс 10, для тех же самых действий в «семёрке» нет никаких существенных отличий и таким образом вы сможете избавиться от нагрузки CPU процессом rundll32.exe.

Примечание: 14.01.2020 компания Microsoft официально прекращает поддержку Windows 7, а значит, обновления оптимизации и безопасности больше не будут выходить для широкого круга пользователей, что поставит вашу работу под угрозу. В связи с этим обновление будет более рациональным решением в долгосрочной перспективе.

Причина 2: Поиск материалов для игр

Кроме вышеописанного процесса, rundll32 выполняет поиск сопроводительных материалов, таких как картинки и обложки для игр, установленных на вашем ПК, визуально заполняя «Games Explorer», то есть «Обозреватель игр». Поскольку он осуществляет поиск на тех же серверах Microsoft, многие игры попросту не будут найдены (вроде тех же Корсар или других образцов классики), но приложение будет упорно искать, используя всю мощность процессора. Чтобы прекратить бесплодные и ненужные попытки системы обогатить вашу библиотеку, действуйте так:

    Кликните по кнопке «Пуск», а потом по «Игры».

В открывшемся окне приложения «Обозреватель игр» перейдите в «Параметры».

Переведите значение настроек «Обновление игр и новости» на «Не выполнять автоматическую проверку обновлений и новостей в Интернете, эти операции будут проводиться вручную». Дополнительно уберите галочки в «Параметры папки «Игры»» с «Загрузить сведение и картинки для установленных игр» и «Собирать сведения о последних играх», после чего нажмите кнопку «ОК».

Читать еще:  Управление записями домена

Для полной уверенности рекомендуем очистить значение строкового параметра «Games», находящегося в папке «ServiceLocation», с помощью системного приложения «Редактор реестра». По умолчанию там находится ссылка на Microsoft Store, и компьютер при переходе на неё начинает поиск сопроводительных материалов. Если её удалить, ПК не сможет обработать задачу, нагружая процессор.

Если вы пользуетесь Internet Explorer, имеет смысл посмотреть, не работает ли браузер в автономном режиме. Порой такой режим возвращает нагрузку через процесс rundll32.

Причина 3: Заражение вредоносными элементами

Как и любые другие системные файлы, rundll32 может быть использован вирусами для своих «тёмных» делишек. При этом сам процесс может быть условно «чистым», а вредоносное ПО захочет мимикрировать под него, ещё больше запутывая пользователя. Для того чтобы определить, стал ли процесс вирусом, или же последний просто присвоил его имя, нужно предпринять комплекс мер. Он включает участие сторонних программ, углублённо манипулирующих реестром, а также лечащих утилит и системных инструментов для восстановления повреждений.

В рамках данной статьи были рассмотрены решения самых распространённых причин того, почему rundll32.exe грузит процессор, а это может быть как специфическое приложение перехода на Виндовс 10, так и чрезмерное желание системы найти вам сопроводительные материалы для игр, однако не стоит скидывать со счетов и вездесущие вирусы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Хост процесс rundll32 что это

Тоже столкнулся с данной проблемой
Сначала грешил на кривую версию Windows7, но когда через неделю купил второй комп с Windows7, то понял, что проблема не в версии ОС, а в самой ОС
Причём заметил, что в первые разы игры запускаются, а потом происходит зацикливание хост-процесса, поэтому приходилось запускать по несколько копий игры и убивать процесс Rundll32
В инете нашёл (http://answers.microsoft.com/ru-ru/windows/forum/windows_7-gaming/%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BB%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%82%D1%8C%D1%81%D1%8F-%D0%B8%D0%BB%D0%B8-%D0%B2%D0%BE%D0%BE%D0%B1%D1%89%D0%B5-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%8E%D1%82%D1%81%D1%8F/d606e19f-c7f7-42da-88a7-95acdb13f061) развёрнутое объяснение происходящего и способ решения проблемы. Нашёл на сайте Майкрософта, но не от суппорта, потому что поддержка у МС на редкость убогая и сказала следующее:
цитата: Проблема в том, что игры старые. Если режим совместимости не помогает — сорее всего, Вы не сможете использовать эти игры на Windows 7. В решении этой проблемы Вам сможет помочь только их издатель При этом тот факт, что игры запускались первые несколько раз во внимание не принимался
Описание и решение от нормального человека:
цитата: Основная проблема Майкрософт заключается в том, что в саппорт набирают полных дебилов.

С технической точки зрения механизм работает так. Пользователь пытается запустить каким-то образом исполняемый файл. Но система не сразу дает ему управление, а сначала пытается проверить его совместимость по различным признакам (такие как имя, контрольная сумма и т.п.) Если системе показалось, что файл находится в списке несовместимых или устаревших, то она может либо предупредить пользователя о том, что нужно применять режимы совместимости, либо вообще заблокировать выполнение этой задачи (установщик старой версии Windows, к примеру).

В Висте/Семерке к этому списку добавился еще и список legacy игр. Проверка для них осуществляется только по имени исполняемого файла. Если имя исполняемого файла игры совпало с одним из этого списка, то _ПЕРЕД_ запуском этого исполняемого файла ОС запускает этот самый rundll32, чтобы он добавил игру в гейм эксплорер. Пока он не отработает — запуска этого исполняемого файла не произойдет. Данные для добавления берутся из файла GameUXLegacyGDFs.dll.

Далее, в какой-то момент портится база данных ГеймЭксплорера. Портится она самопроизвольно в результате работы самого ГеймЭксплорера (точнее того кода, который был в него добавлен в семерке). Не у всех и достаточно редко. Виноват, конечно, сам пользователь — выключил компьютер когда Геймэксплорер на фоне занимался очень важной оптимизацией для быстродействия своих данных или рано закрыл окно ГейЭсплорера после запуска игры, не промедитировав положенные 10 минут . Под БД я понимаю здесь совокупность информации из GameUXLegacyGDFs.dll, реестра и файловой структуры(которая разбросана по куче папок). После этого код GameUx.dll не может правильно проитерировать все записи из GameUXLegacyGDFs.dll (и не может обнаружить порчу метаданных) в результате чего зацикливается.

Зациклившись, он начинает съедать ресурс процессора. Т.к. по счастью, он не многопоточный, то он займет не весь процессор, а только одно ядро. Для одноядерных это может быть процентов 70 (остальное съедят другие задачи), для двухядерных — 50%, для моего 3х-ядерного — 33% и т.д.

1. Игра может запускаться и работать, но при этом тормозить, не выдавать ожидаемого фпс. Самое явное проявление — дергающийся звук. Даже если вам кажется, что все хорошо — нажмите три кнопки и посмотрите, не висит ли у вас rundll32 в процессах. Владельцы многоядерных могут вообще не замечать проблемы, а таких процессоров сейчас большинство.

2. Игра запускается со второй попытки. Это, кстати, по совместительству, одно из решения проблемы. Просто запустить еще раз и забить на фоновый процесс.

3. Подобная ситуация может возникать не со всеми играми, а только с теми, которые ОС распознает как игры (наличие данных для ГеймЭксплорера) или имя исполняемого файла находится в списке Legacy игр. Или вообще с одной отдельно взятой игрой.

1. Способ от саппорта! В геймэксплорере отключить сбор информации об игре. Способ, естественно, не работает, но упоминаю потому, что всех, кто столкнулся с проблемой будут сначала проверять на вирусы, потом отправлять на базу знаний Майрософта, где написана эта рекомендация.

2. Отключить все остальное в геймэксплорере и почистить собранную информацию. Тоже мало кому-помогает.

3. Переименовать исполняемый файл игры. Недостатки: каждую игру нужно переименовывать отдельно, некоторые онлайн-игры скачивают заново исполняемый файл или он создается во время запуска и др.

4. Отключить геймэксплорер путем удаления файлов gameux.dll либо записей в ветви реестра HKLMSOFTWAREMicrosoftWindowsCurrentVersionGameUX. Тоже не всегда является выходом, т.к. многим удобно использовать ГеймЭксплорер, в конце-концов не зря же его делали.

5. Удалить базу старых игр GameUXLegacyGDFs.dll. В отличие от предыдущего, записи о новых играх будут работать. Но отключатся старые.

6. Дождаться, пока кто-то из разработчиков не сделает дифф на старые версии gameux.dll и не удалит ошибочный код. Это будет тяжело и очень долго, т.к. саппорт, который должен осуществлять взаимодействие между пользователем и разработчиком, в Майкрософте страдает херней, рассказывает, что все так и должно быть как оно есть или придумывает свои способы «решения» проблемы.

Вопросы совместимости приложения и операционной системы:

Как в данной ситуации этими может заниматься разработчик приложения, когда до выполнения его кода дело даже и не доходит? Ему надо писать драйвер, который будет обходить механизмы ОС и патчить ошибки Майкрософта? Если этого не происходит в определенных играх, то это просто означает, что имя исполняемого файла еще не попало в список Legacy или на машине еще не повреждена БД ГеймЭксплорера.

Ссылка на основную публикацию
Adblock
detector