Хочу-таки разобраться, что там с запуском клиента без прав администратора. Насколько я понял, рутовые права нужны не самому клиенту , а патчеру. Мысль такая - определить, что делает патчер и расширить стандартную ограниченную учётку WinXP, ровно настолько, чтобы патчер запускался. Кто-нибудь пытался сделать что-нибудь подобное?
А откуда ты взял, что там патчер что-то мего делает? Если ты о сегодняшней теме в ошибках, то там сохраниться файл не может. Получается патчер работает, а в папку файл сохранить не может. И тем более - ошибка вызвана на CreateFile, вот и ищи, какой из параметров крашит функцию на той машине. HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes, __in DWORD dwCreationDisposition, __in DWORD dwFlagsAndAttributes, __in_opt HANDLE hTemplateFile ); Разбор параметров.
Нет, я не об этом - я просто хочу запустить РО от пользовательского бюджета. От рута я дал полные папочные права всем непривилегированным бюджетам, т.е. проблема не в правах RWX на папке с клиентом. Что я вижу - я вижу, что патчер поднимается, проверяет обновления и загружает инфу с web-ресурса, значит -mshtml.dll и wininet.dll доступны для входов. Я так подозреваю, где-то дальше идёт какой-то хук, который лочится по правам. Если истина где-то тут, нужно отловить хук, отследить точки входа и дать на них права.
Если я не ошибаюсь, клиент(а не патчер) лезет в реестр и сохраняет там имя учетки, настройки видео и т.д.
Выдал полные права всем бюджетам на ветку со всеми наследниками HKEY_LOCAL_MACHINE\SOFTWARE\graffity Soft - толку 0. Если дело в правах на W в реестр, то это не здесь.
Лезет оно именно сюда. Там же видишь ID, DEVICENAME, ISFULLSCREEN и т.д. Увидел тут (HKEY_CURRENT_USER\Software\Microsoft\DirectInput\MostRecentApplication) Ragnarok.exe, уже больше времени нет, чтобы разбираться - что там.
Апдейтер, скачивая обновления, раскладывает их аккуратно по своей папочке (т.е. директории, в которой он находится), чтобы по завершению скачивания всех недостающих обновлений, распаковать их во временной папке, и перепаковать основную действующую *.grf-библиотеку игрового проекта.