У игрового клиента Battle.net имеется вспомогательное приложение-обновлятор под названием Agent.exe, размещенное по следующему пути: <code>C:\ProgramData\Battle.net\Agent</code>. В этой директории находятся два файла: <b>.product.db</b> и <b>product.db</b>, в которых содержится информация о системе, аккаунте и серверах обновлений Battle.net. В связи с этим у меня возникает вопрос: как можно заблокировать доступ на изменение этих файлов, оставив для них только права на чтение? Я уже пробовал следующие методы: 1. Установка атрибутов файла командой `attrib +R +S +H "C:\ProgramData\Battle.net\Agent\product.db"`, но это не дало результата, так как "скрытые" файлы просто удалились и Agent создал новые; 2. Удаление прав доступа к файлам, смена владельца файлов и установка правил Deny — эффекта не было; 3. Шифрование файлов также не помогло; 4. Попытки создать символические ссылки также завершились неудачей, так как ссылки были удалены, а файлы снова созданы. Могу ли я как-то перехватить действия Agent.exe для предотвращения создания и изменения этих файлов? Существуют ли возможности отключить какой-либо обработчик при его запуске?
Запретить доступ к файлам Agent.exe или любому другому процессу, связанному с обновлением Battle.net, может быть сложной задачей, особенно если программа сама управляет своими файлами. Вот несколько подходов, которые вы можете попробовать: 1. **Изменение разрешений на уровне системы**: - Попробуйте изменить разрешения не только для файлов, но и для самой директории `C:\ProgramData\Battle.net\Agent`. Для этого: 1. Щелкните правой кнопкой мыши на папке `Agent` и выберите `Свойства`. 2. Перейдите на вкладку `Безопасность`. 3. Выберите пользователя, которому хотите запретить доступ, и измените уровни доступа, убрав разрешения на запись. 4. Убедитесь, что настройки применены к подкаталогам и файлам. 2. **Использование антивирусного ПО**: - Некоторые антивирусные программы имеют возможность настраивать защиту файлов и могут блокировать изменение определенных файлов. Попробуйте добавить файлы `.product.db` и `product.db` в исключения или в список заблокированных для записи. 3. **Мониторинг активности файлов**: - Используйте программы, такие как Process Monitor (от Sysinternals), чтобы отслеживать, какие процессы обращаются к вашим файлам. Вы можете попробовать определить, как именно Agent.exe взаимодействует с этими файлами. 4. **Использование виртуальных машин или контейнеров**: - Если вам не удается заблокировать доступ с помощью настроек системы, можно рассмотреть вариант запуска Battle.net в изолированной среде, такой как виртуальная машина или контейнер. Это может помочь контролировать доступ к файлами, но требует дополнительных ресурсов. 5. **Изменение конфигурации Agent.exe**: - Если у Aagent.exe есть файл конфигурации, возможно, в нем есть параметры, которые можно изменить для остановки обновлений или ограничения доступа к определенным данным. 6. **Блокировка через файрвол**: - Если Agent.exe необходимо для загрузки обновлений, иногда бывает достаточно его заблокировать с помощью фаервола, чтобы он не мог отправлять данные обратно на серверы Battle.net, но это не повлияет на доступ к файлам. 7. **Использования сторонних утилит**: - Некоторые утилиты могут контролировать доступ к файлам и предотвращать изменения, однако их использование может повлечь неожиданные последствия. Обратите внимание, что попытки заблокировать или изменить поведение программного обеспечения могут привести к неправильной работе приложения. Убедитесь, что вы понимаете возможные риски и последствия ваших действий.
Если Agent работает от системной учётной записи, то никак вы ему не ограничите логически права в пределах этой системы. Есть два с половиной варианта (но Agent может отказаться работать с любым из них или с обоими, нужно проверять методом тыка).
1. ограничить запись физически - поместить файлы на CD-ROM; очень редко встречаются флешки с переключателем защиты от записи; на SD-картах (которые не microSD, а большие) и переходниках SD/microSD есть переключатели. Тут фикус-пикус в том, что, вероятно, потребуется создать symlink'и, а вы говорите, что Agent их удаляет. Но можно попробовать сделать symlink не на отдельный файл а на целую папку, содержащую этот файл. Возможно, Agent не догадается удалить и создать заново эту папку.
2. ограничить права за пределами этой системы - поместить файл на сетевой шаре, расшарить только для чтения. Даже имея полные права на своей системе, Agent будет бессилен на другом хосте, содержащем шару. Опять же, шару придётся смонтировать, как сетевой диск; догадается ли Agent отмонтировать сетевой диск? Откажется ли работать с сетевым диском?
0. а не проще ли мониторить изменение файлов (есть утилиты для этого) и при обнаружении изменений сразу восстанавливать файл из резервной копии? Да, есть шанс, что это не сработает, если немедленно после обновления файла он считывается и восстановление уже опаздывает. Но если повезёт, то будет хватать времени для восстановления. Я бы попробовал.
Сделай бэкап и восстанавливай когда надо, можно в планировщик засунуть скрипт.