Поделиться через


Программное обеспечение для исправлений игры в Windows XP, Windows Vista и Windows 7

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

Существует две основные категории игр, требующих исправлений:

  • Игры, требующие лишь редких исправлений, например, большинство автономных игр.
  • Игры, требующие частых исправлений, таких как большинство онлайн-игр.

В этой статье также дается краткое введение в Контроль учетных записей (UAC), чтобы служить фоном для понимания прав, которые разработчики могут ожидать у пользователей в Windows Vista и Windows 7.

Контроль учетных записей пользователей

Windows Vista и Windows 7 имеют два основных типа учетных записей пользователей: стандартный пользователь и администратор. У учетной записи стандартного пользователя есть несколько ограничений доступа; Например, он не может записывать данные в файловую систему в %SystemDrive%\Program Files или в реестр в HKEY_LOCAL_MACHINE. Это имеет последствия для применения исправлений к игре, если она установлена в каталоге с правами только для чтения. В отличие от Windows XP, учетная запись стандартного пользователя гораздо чаще используется в Windows Vista и Windows 7. Учетные записи стандартных пользователей также необходимы для важных функций операционной системы, таких как родительский контроль. Родительские средства контроля требуют, чтобы учётная запись ребёнка была стандартным пользователем, и повышение такой учётной записи до администратора даже для одной игры мешает работе родительских средств контроля со всеми другими играми. Таким образом, важно, чтобы игры были разработаны для стандартного пользователя.

Windows Vista и Windows 7 имеют более новую модель для прав пользователей, чтобы предотвратить запуск пользователей программ, пытающихся выполнять операции, которые пользователь не намерен или авторизовать. Для этого управление учетными записями пользователей (ранее называемой учетной записью пользователя с наименьшими привилегиями или LUA) позволяет пользователям работать с компьютером с низким уровнем прав большую часть времени, а также возможность легко запускать приложения, требующие прав более высокого уровня при необходимости. Это означает, что учетные записи пользователей уровня "Стандартный" и "Администратор" выполняют приложения с правами "Стандартный пользователь", но только учетные записи администратора имеют возможность предоставлять приложениям повышенные права. Операционная система запрашивает у пользователей учетные записи администратора явное согласие перед запуском приложения с повышенными правами и если программа, требующая прав администратора, выполняется в учетной записи стандартного пользователя, система запрашивает утверждение администратора.

Игры, требующие только случайных исправлений

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

Заметка

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

 

Метод 1. Использование установщика Windows для случайных исправлений

В этом методе установщик Windows используется для установки пакета (.msi файла), а патч установщика Windows (.msp файла) распространяется для установки исправлений. Пакет должен иметь таблицу MsiPatchCertificate, а исправление должно быть подписано сертификатом в таблице. Дополнительные сведения о цифровой подписи можно найти в Authenticode Signing for Game Developers.

Дополнительные сведения и требования к использованию этого метода исправления см. в документации по установщику Windows:

Недостатком этого метода является то, что если игра не была установлена из съемных носителей в Windows XP, то исправление требует прав администратора. Однако это вряд ли будет слишком строгим, так как большинство пользователей являются администраторами на Windows XP, а ограничение на программное обеспечение, установленное с съемных носителей, отсутствует в Windows Vista.

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

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

Метод 2. Требовать права администратора для применения исправлений

В этом методе исполняемый файл, который применяет исправление, требует прав администратора для выполнения. С правами администратора исполняемый файл исправления может напрямую изменять файлы игры, расположенные в %SystemDrive%\Program Files.

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

  • Попросите администратора войти в систему и установить обновление для игры, что может быть неудобно для обеих сторон.
  • У него или ее учетной записи постоянно повышены права администратора.

Заметка

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

 

При реализации этого метода исполняемый файл, который применяет исправление, должен отличаться от исполняемого файла игры. Манифест исполняемого файла пакета обновлений должен указать атрибут requireAdministrator для запрошенного уровня выполнения, чтобы обозначить его приложением, требующим прав администратора. Дополнительные сведения о том, как это сделать, можно найти в разделе Рекомендации разработчика и рекомендации по приложениям в наименее привилегированной средев разделе "Схема манифеста приложения".

Если этот метод используется, даже с параметрами манифеста, исполняемый файл по-прежнему может быть запущен без прав администратора в двух случаях:

  • Если операционная система — Windows XP, а учетная запись пользователя — ограниченный пользователь.
  • Если операционная система является Windows Vista или Windows 7, учетная запись пользователя является стандартным пользователем, а UAC отключена.

Оба из них являются редкими сценариями потребления. Однако в манифесте средства исправления должно быть указано требование прав администратора, и средство исправления должно вызывать IsUserAnAdmin; Если эта функция возвращает значение FALSE, отображается сообщение об ошибке "Требуются права администратора".

В целом, метод 1 предпочтительнее для игр, которые нуждаются всего в нескольких исправлениях за их время существования.

Игры, требующие частых исправлений

Многие интернет-игры постоянно улучшаются, и они обычно требуют регулярных исправлений. Для этих игр исправления могут применяться для каждого пользователя или компьютера, как описано в следующих разделах. Другие возможные решения включают изменение ACL, которое защищает %SystemDrive%\Program Files или создание пользовательской службы.

Метод 3. Установка Per-User

Одним из рекомендуемых и простых подходов является установка всей игры в подкаталог данных локального приложения для каждого пользователя, который можно найти, вызвав SHGetFolderPath с CSIDL_LOCAL_APPDATA. Пример пути — C:\Documents and Settings\user name\Local Settings\Application Data\ExampleGame. Такое расположение позволяет приложению, работающему с правами пользователя уровня "Стандартный", напрямую изменять файлы игр.

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

Метод 4. Установка в общее место Per-Computer

Другим способом является установка неисполнимых игровых данных в подкаталог пути, указанного SHGetFolderPath CSIDL_COMMON_APPDATA; пример пути — C:\Documents and Settings\All Users\Application Data\ExampleGame. Это общее расположение для всех пользователей, и его можно изменить приложениями, которые выполняются с правами стандартного пользователя. Этот метод сводит к минимуму необходимость повторного применения больших исправлений при воспроизведении игры из нескольких учетных записей. Исполняемые файлы для игры должны храниться в %SystemDrive%\Programs Files, чтобы свести к минимуму риск для других учетных записей в системе. Исполняемые файлы должны проверить целостность нового содержимого в общем каталоге, так как это расположение может быть изменено программой или человеком с правами пользователя уровня "Стандартный"; рекомендуется использовать MapFileAndCheckSum для вычисления контрольной суммы файлов.

Этот метод имеет преимущество работы одинаково хорошо в Windows XP и Windows Vista, и он не требует прав администратора.

Другие возможности

Вне уже рассмотренных методов можно изменить ACL %SystemDrive%\Program Files\Game Folder\ при установке игры, чтобы средство исправления могло записывать непосредственно в файлы игры даже при запуске с правами стандартного пользователя. Хотя это не сложно, это обходит защиту безопасности, которую система предлагает файлам игры и предоставляет возможность вредоносным программам изменять содержимое каталога. Это не рекомендуется, и настоятельно рекомендуется использовать альтернативу.

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

Сводка

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

Дополнительные сведения о защите учетных записей пользователей см. в требованиях к разработке приложений Windows Vista для контроля учетных записей пользователей (UAC).