Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   Запуск игры с dll (http://forum.oszone.net/showthread.php?t=314453)

Analog 01-05-2016 12:06 2631078

Запуск игры с dll
 
Добрый день.
Есть игра Age of Mythology от Microsoft.
Есть компьютер, на котором нет админских прав, и быть не может.

Игра для запуска требует библиотеку msxml4.dll
Проблема в том, что .exe не воспринимает эту dll-ку, если она лежит рядом. Проверял на другом компе - требуется строго, чтоб этот файлик лежал в C:\Windows\SysWOW64 (C:\Windows\System32).

Вопрос - как заставить ексешник искать дллку в своей же папке, а не пытаться проверять в папке с виндой?

Quaker_75 01-05-2016 14:48 2631107

На компьютере игра уже установлена, как я понял?
Цитата:

Цитата Analog
.exe не воспринимает »

- какой .exe?
Цитата:

Цитата Analog
не воспринимает эту dll-ку »

- Если установка шла из-под админа, указанный файл должен находиться именно там, где ему прописано....
Цитата:

Цитата Analog
Проверял на другом компе »

- Ну так сделайте тоже самое на искомой машине....
Цитата:

Цитата Analog
как заставить ексешник искать дллку в своей же папке »

- К чему все это??? Определенные dll библиотеки ОБЯЗАНЫ находиться в системных папках для их корректной работы....

Analog 01-05-2016 16:58 2631138

Цитата:

Цитата Quaker_75
- какой .exe? »

исполняемый. который игру запускает.

Цитата:

Цитата Quaker_75
- Если установка шла из-под админа, указанный файл должен находиться именно там, где ему прописано »

после установки игры отдельно запускается установщик MSXML 4.0 (https://www.microsoft.com/en-US/down....aspx?id=19662)
Без админ.прав запуск установщика невозможен. Поэтому я нашел файл, который отвечает за возможнсть запуска игры, и положил его рядом с .exe
Раньше всегда прокатывало - эта же игра (ексешник) ищет требуемую dll не рядом с собой, а строго в папке system32

То есть, рядом с ексешником валяется куча других библиотек - binkw32.dll, msvcp60.dll и т.п. - для них достаточно быть НЕ в системной папке с виндой. А вот msxml4.dll исполняемый файл не хочет видеть рядом с собой. Может, можно ковырнуть в нём hex-редактором что-то ? Пару бит каких-нибудь изменить, чтоб поменять путь для поиска.

Цитата:

Цитата Quaker_75
Ну так сделайте тоже самое на искомой машине »

невозможно. на ней нет админских прав, и никто их не даст.

Iska 01-05-2016 18:19 2631160

Цитата:

Цитата Analog
Раньше всегда прокатывало - эта же игра (ексешник) ищет требуемую dll не рядом с собой, а строго в папке system32 »

Ему явно нужна регистрация этой dll (по regsvr32.exe). Попробуйте проделать следующее:
  • сделать слепок реестра без msxml4;
  • установить MSXML 4.0;
  • сделать ещё один слепок реестра;
  • сравнить слепки;
  • полученную разницу переделать с HKLM на HKCU, откорректировать пути с %SystemRoot%\System32 и т.п. на потребный, затем сделать соответствующий файл реестра;
  • удалить MSXML 4.0;
  • установить игру;
  • поместить файлы, извлечённые из инсталляции MSXML 4.0 в потребное место;
  • импортировать созданный выше файл реестра.
Затем проверить работоспособность. Если заработает — значит Вам повезло, можете попытаться проделать сие и там, где нет административных прав.

Analog 01-05-2016 20:26 2631193

Iska, большое Вам спасибо. По вашей наводке разобрался с реестером. В нем действительно прописывается путь до длл-ки.
Создал пользователя без админских прав - с заменой на HKCU работает!

Я просто оставлю это здесь...

осталось только проверить, сработают ли эти пути реестера для win32. делал-то я это все на своей 64-битке (SOFTWARE\Classes\Wow6432Node\CLSID\{7c6e29bc-8b8b-4c3d-859e-af6cd158be0f})

Iska 01-05-2016 22:29 2631220

Цитата:

Цитата Analog
осталось только проверить, сработают ли эти пути реестера для win32. делал-то я это все на своей 64-битке (SOFTWARE\Classes\Wow6432Node\CLSID\{7c6e29bc-8b8b-4c3d-859e-af6cd158be0f}) »

Сработают. Естественно, для x86 нужно использовать пути в реестре без редиректа.


Время: 15:48.

Время: 15:48.
© OSzone.net 2001-