Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Ошибка zCMusicSys_DirectMusic

Здравствуй, сообщество! Возможно немного не там создаю тему, так как это не призыв о помощи, а небольшое объяснение, для сообщества Win10Tweaker и сообщества Готики 1 и 2 частей. Хочу сразу сказать, что я не собираюсь обвинить кого-то в данном вопросе, а лишь хочу внести ясность, для будущих людей, которые могут прийти на данных форум и начать возникать и выйдет недопонимание с двух сторон. Поскольку во всех данных проблемах виновата сама Windows.
Пару месяцев назад создавался пост, о том, что программа Win10Tweaker удалила драйвер и игра перестала работать, как там было уже сказано, это никак не влияет, а вся проблема в DirectMusic и о том, как устроена её ветка реестра в Windows.
Библиотека регистрирует свои dll в ветке реестра начиная с HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{D2AC2881-B39B-11D1-8704-00600893B1BD} и заканчивая {D2AC2898-B39B-11D1-8704-00600893B1BD}. Различия имеются лишь вначале D2AC2881 и D2AC2898, то есть с 81 до 98. Так вот, что я заметил. Видимо Microsoft уже давно забыла о данной библиотеке для работы со звуком, но в реестре данные так и висят мертвым грузом со времен Windows XP, но всё же какие-либо игры, а возможно даже и программы довольно старые, которыми могут пользоваться люди, использует данную библиотеку.
Почему же так происходит, объясняю.
В каждой ветке имеется папка InProcServer32, которая имеет значение "По умолчанию" - %SystemRoot%\System32\название.dll. Так вот, часть dll для этой библиотеки, всё же как-то да двигаются, но реестр остается нетронутым, и часть dll перекочевала в SysWOW64.
Разберу свой пример, как раз на игре. В предыдущем посте говорилось, что ошибки начались после очистки Win10Tweaker в этом есть свой правда, а именно в пункте "Очистка реестра", я заметил, что допустим у нас в одном из разделе указано %SystemRoot%\System32\dmime.dll, но открыв данную папку данной библиотеки мы там не обнаружим, так как в 64 разрядной Windows, она находится по пути %SystemRoot%\SysWOW64\dmime.dll и Win10Tweaker зачищает это значение.
Вот пример, указываем неправильный путь в ветке реестра.
Запускаем очистку Win10Tweaker и видим это.
Так вот, если бы изначально у нас был указан правильный путь в ветке реестра %SystemRoot%\SysWOW64\dmime.dll, то проблем не возникает. Win10Tweaker спокойно пропускает этот раздел, так как видит, что там всё корректно. Честно до конца не знаю, правильно решение данной проблемы, кроме как запуска командной строки от имени администратора и прописав вручную следующие команды, которые исправят огрехи Windows x64.

cd %SystemRoot%\System32\
regsvr32 dmusic.dll
regsvr32 dmloader.dll
regsvr32 dmsynth.dll
regsvr32 dswave.dll
cd %SystemRoot%\SysWOW64\
regsvr32 dmusic.dll
regsvr32 dmloader.dll
regsvr32 dmsynth.dll
regsvr32 dswave.dll
regsvr32 dmband.dll
regsvr32 dmcompos.dll
regsvr32 dmime.dll
regsvr32 dmscript.dll
regsvr32 dmstyle.dll

Так как в таком случае, Windows создаст корректные ветки реестра для работы библиотеки DirectMusic.
Я выражаю огромное уважение Хачатуру, за тот труд, что он делает и очень надеюсь, что данный пост, в будущем возможно поможет многим людям.
Если я вдруг в чем-то неправ, я с большим удовольствием готов выслушать всё. А если вдруг я действительно смог чем-то помочь и внести ясность, буду очень рад 🙂

admin, Удаленный пользователь и ещё 11 отреагировали на эту запись.
adminУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь

Привет, Булат.
Это наводит на очень интересные мысли. И сейчас напишу также подробно, что Я сделал в новой beta:
Я сделал так, что если в полном пути реестра есть СкопированоWOW6432Node, то подменять в поиске каталог СкопированоSystem32 на СкопированоSysWOW64.
И почему:

Итак, из этой темы, а также по похожему вопросу, делаем выводы, что есть проблема только на старых играх начала нулевых. Также мы понимаем, что это дело 32-х битных игр. Мы знаем, что 32-х битные пути в реестре, включающие в себя СкопированоWOW6432Node, имеющие подразделы СкопированоInProcServer32, СкопированоLocalServer32, СкопированоInprocHandler32, имеющие в параметрах по умолчанию пути, которые включают в себя СкопированоSystem32, на самом деле ссылаются на СкопированоSysWOW64.

Вернёмся ко второму абзацу в следующем абзаце, а пока скажу, что первое пришло в голову. Чтобы исправить ситуацию с поиском путей, Я просто делаю проверку, а есть ли файлик по пути не СкопированоSystem32, а именно в СкопированоSysWOW64. И если нет, то вынести этот мусор из реестра.

Возвращаясь ко второму абзацу, можно было бы сказать, что это де факто, что System32 – это на самом деле SysWOW64, однако, кто знает этот Microsoft, ибо если покопаться в этой 32-х битной ветке, можно обнаружить, что есть пути, где написаны правильные, а именно СкопированоSysWOW64, а не СкопированоSystem32. То есть бывают 2 варианта. Чтобы проверить, что удаляется, Я просто сделал очистку, как на тестовой машине, так и на реальной. И вот что обнаружил. Win 10 Tweaker удалил Мне ветки, где обнаружилось, что файлов в СкопированоSysWOW64 нет. Однако, эти файлы таки были в СкопированоSystem32. Сидишь и думаешь, а вот стоило ли это делать? Точно ли [simple_tooltip content='HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{60F44560-5A20-4857-BFEF-D29773CB8040} ➜ InProcServer32 ➜ c:\windows\system32\driverstore\filerepository\nv_dispig.inf_amd64_647b4244e991951b\nvencmfth264.dll']это, например[/simple_tooltip], мусор...

Думаю, что да. И вот почему.
Предположим, что ветка из примера выше правильная (та, что от NVIDIA). Она рабочая и не нужно было её удалять. Тогда возникает вопрос, как перестаёт работать звук у человека в игре, если файл ищется в System32? Значит всё-таки в ветке на самом деле ищется в SysWOW64, а не System32, т.к. исправление, что Твоё Булат, что Marshak, исправляет проблему и файл таки ищется в SysWOW64.

Из всего вышенаписанного делаю выводы, что всё сделал сейчас правильно в новой beta и спокойно можно сносить пути из веток WOW6432Node, если они ссылаются даже на System32. Ибо если в SysWOW64 нет искомого файла, значит это мусорная ветка. Время покажет.

И да, Я мог бы сделать двойную проверку, проверять и там и там. Но какой смысл в двойной нагрузке программы, если логика описанная выше, подтверждает, что пути, какие бы ни были указаны, всё равно они смотрят в SysWOW64. Время покажет. Пока предлагаю обновить [beta]

Удаленный пользователь, Удаленный пользователь и ещё 16 отреагировали на эту запись.
Удаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь

Здравствуйте, Хачатур! Даже представить не мог, что данный пост, окажет такое влияние на развитие Win10Tweaker! Очень приятно.

admin, Удаленный пользователь и ещё 7 отреагировали на эту запись.
adminУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользовательУдаленный пользователь