다음을 통해 공유


Windows XP, Windows Vista 및 Windows 7에서 게임 소프트웨어 패치

Windows Vista 및 Windows 7에는 운영 체제를 보다 안전하게 만드는 다양한 기능이 있습니다. 보안이 추가됨은 소프트웨어에 패치를 적용하는 것이 과거만큼 간단하지 않다는 것을 의미합니다. 이 문서에서는 Windows XP뿐만 아니라 Windows Vista 및 Windows 7에서 잘 작동하는 패치의 몇 가지 방법을 살펴봅니다.

패치가 필요한 게임의 두 가지 기본 범주가 있습니다.

  • 대부분의 오프라인 게임과 같이 가끔 패치만 필요한 게임입니다.
  • 대부분의 온라인 게임과 같이 패치가 자주 필요한 게임

또한 이 문서에서는 개발자가 Windows Vista 및 Windows 7에서 사용자가 가질 수 있는 권한에 대한 배경 역할을 하는 UAC(사용자 계정 컨트롤)를 간략하게 소개합니다.

사용자 계정 컨트롤

Windows Vista 및 Windows 7에는 표준 사용자 및 관리자라는 두 가지 기본 유형의 사용자 계정이 있습니다. 표준 사용자 계정에는 몇 가지 액세스 제한이 있습니다. 예를 들어 %SystemDrive%\Program Files의 파일 시스템 또는 HKEY_LOCAL_MACHINE 레지스트리에 데이터를 쓸 수 없습니다. 이는 읽기 전용 위치에 설치된 경우 게임에 패치를 적용하는 데 영향을 줍니다. Windows XP와 달리 표준 사용자 계정은 Windows Vista 및 Windows 7에서 훨씬 더 일반적입니다. 표준 사용자 계정은 자녀 보호와 같은 운영 체제의 중요한 기능에도 필요합니다. 자녀 보호는 자녀 계정이 표준 사용자여야 하며, 이러한 계정을 관리자에게 한 게임만 승격하면 자녀 보호가 다른 모든 게임과 작동하지 않습니다. 따라서 게임이 표준 사용자를 위해 디자인되는 것이 중요합니다.

Windows Vista 및 Windows 7에는 사용자가 의도하지 않거나 권한을 부여하지 않는 작업을 수행하려는 프로그램을 실행하지 못하도록 하는 사용자 권한에 대한 최신 모델이 있습니다. 이를 위해 사용자 계정 컨트롤(이전의 최소 권한 사용자 계정 또는 LUA라고 함)을 사용하면 사용자는 대부분의 경우 낮은 수준의 권한으로 컴퓨터를 작동할 수 있지만 필요한 경우 더 높은 수준의 권한이 필요한 애플리케이션을 쉽게 실행할 수 있습니다. 즉, 표준 사용자 계정과 관리자 계정은 모두 표준 사용자 권한으로 애플리케이션을 실행하지만 관리자 계정만 애플리케이션에 상승된 권한을 부여할 수 있습니다. 운영 체제는 관리자 권한이 있는 애플리케이션을 실행하기 전에 관리자 계정의 사용자에게 명시적 동의를 요청하고, 관리자 권한이 필요한 프로그램이 표준 사용자 계정에서 실행되는 경우 시스템에서 관리자 승인을 요청합니다.

가끔 패치만 필요한 게임

일부 게임은 수명 주기 동안 몇 가지 패치만 필요합니다. 패치 빈도에 사용할 수 있는 두 가지 방법은 일반적으로 관리자 권한이 필요하지 않은 Windows Installer 패키지로 패치를 배포하거나 게임 파일을 직접 수정하는 다른 유형의 배포를 사용하는 것입니다.

참고

게임에 잦은 패치가 필요한지 여부에 관계없이 애플리케이션은 일반적으로 관리자 권한을 설치하거나 제거해야 합니다.

 

방법 1: 가끔 패치에 Windows Installer 사용

이 메서드에서는 Windows Installer를 사용하여 패키지(.msi 파일)를 설치하고 Windows Installer 패치(.msp 파일)를 배포하여 패치를 설치합니다. 패키지에는 MsiPatchCertificate 테이블이 있어야 하며, 패치는 테이블의 인증서로 디지털 서명되어야 합니다. 디지털 서명에 대한 자세한 내용은 게임 개발자를 위한 Authenticode 서명에서 찾을 수 있습니다.

이 패치 방법을 사용하기 위한 자세한 내용 및 요구 사항은 Windows Installer 설명서에서 확인할 수 있습니다.

이 방법의 단점은 Windows XP의 이동식 미디어에서 게임이 설치되지 않은 경우 패치에 관리자 권한이 필요하다는 것입니다. 그러나 Windows XP의 대부분의 사용자 관리자와 이동식 미디어에서 설치된 소프트웨어에 대한 제한은 Windows Vista에 없기 때문에 너무 제한적일 수 없습니다.

이 방법의 기본 장점은 상승된 권한에 대한 프롬프트 및 인증 없이 표준 사용자 계정에서 패치를 적용할 수 있다는 것입니다. 이는 게임을 플레이하기 위해 표준 사용자 계정을 가진 사용자가 관리자 계정을 가진 사람에게 패치를 설치하거나 표준 사용자 계정에 영구 관리자 권한을 제공하도록 요청할 필요가 없으므로 더 나은 사용자 환경을 제공합니다.

이 방법은 패치가 자주 필요한 게임에서 작동할 수 있지만 빌드 통합 및 많은 수의 파일 지원 측면에서 Windows Installer 패키지를 사용하는 오버헤드로 인해 이 메서드가 다른 방법보다 덜 바람직할 수 있습니다.

방법 2: 패치 적용을 위한 관리자 권한 필요

이 메서드에서 패치를 적용하는 실행 파일을 실행하려면 관리자 권한이 필요합니다. 관리자 권한으로 패치 실행 파일은 %SystemDrive%\Program Files에 있는 게임 파일을 직접 수정할 수 있습니다.

이 메서드의 장점은 단순성입니다. 그러나 표준 사용자 계정을 가진 사용자가 대규모 멀티 플레이어 온라인 게임과 같이 자주 패치가 필요한 게임을 플레이하려는 경우 해당 사용자에게 다음 두 가지 옵션이 있기 때문에 게임에 자주 패치가 필요한 경우 이 방법은 적합하지 않습니다.

  • 관리자에게 로그온하여 게임을 패치합니다. 이는 양 당사자에게 불편할 수 있습니다.
  • 관리자 권한으로 계정을 영구적으로 승격해야 합니다.

참고

후자의 솔루션은 시스템 전체의 보안을 약화시킬 뿐만 아니라 자녀 보호와 같은 중요한 기능이 작동하지 않도록 방지합니다.

 

이 메서드를 구현할 때 패치를 적용하는 실행 파일은 게임 실행 파일과 달라야 합니다. 패치 실행 파일의 매니페스트는 requestedExecutionLevel에 대해 requireAdministrator를 지정하여 관리자 권한이 필요한 애플리케이션으로 표시해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 "애플리케이션 매니페스트 스키마"에서 최소 권한 환경의 애플리케이션에 대한 개발자 모범 사례 및 지침을 참조하세요.

이 메서드를 사용하는 경우 매니페스트의 설정에도 불구하고 실행 파일은 두 가지 경우 관리자 권한 없이 계속 시작될 수 있습니다.

  • 운영 체제가 Windows XP이고 사용자의 계정이 제한된 사용자인 경우
  • 운영 체제가 Windows Vista 또는 Windows 7인 경우 사용자의 계정은 표준 사용자이고 UAC는 사용하지 않도록 설정됩니다.

이 두 가지 모두 드문 소비자 시나리오입니다. 그러나 패치는 매니페스트에 관리자 권한이 필요하며 IsUserAnAdmin을 호출해야 합니다. 이 함수가 FALSE를 반환하면 "관리자 권한이 필요합니다."라는 오류 메시지가 표시됩니다.

전반적으로 메서드 1은 수명 동안 몇 개의 패치만 필요한 게임에 적합합니다.

자주 패치가 필요한 게임

많은 인터넷 기반 게임이 지속적으로 개선되고 있으며 일반적으로 정기적인 패치가 필요합니다. 이러한 게임의 경우 다음 topics 설명한 대로 사용자별 또는 컴퓨터당 패치를 적용할 수 있습니다. 다른 가능한 솔루션으로는 %SystemDrive%\Program Files를 보호하는 ACL을 변경하거나 사용자 지정 서비스를 만드는 것이 있습니다.

방법 3: 설치 Per-User

권장되고 쉬운 방법 중 하나는 로컬 애플리케이션 데이터 폴더의 사용자별 하위 폴더에 전체 게임을 설치하는 것입니다. 이 하위 폴더는 CSIDL_LOCAL_APPDATA SHGetFolderPath 를 호출하여 찾을 수 있습니다. 예제 경로는 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 모두에서 동일하게 작동하는 이점이 있으며 관리자 권한이 필요하지 않습니다.

기타 가능성

이미 설명한 방법 외에, 패치 도구가 표준 사용자 권한으로 실행되는 경우에도 게임 파일에 직접 쓸 수 있도록 게임을 설치할 때 %SystemDrive%\Program Files\Game Folder\의 ACL을 변경할 수도 있습니다. 이는 어렵지 않지만 시스템이 게임의 파일에 제공하는 보안 보호를 무시하고 악의적인 프로그램이 디렉터리의 콘텐츠를 변경할 수 있는 기회를 제공합니다. 이는 권장되지 않으며 대신 대안을 사용하는 것이 좋습니다.

한 가지 최종 가능성은 사용자 지정 서비스를 작성하는 것입니다. 일반적으로 게임을 패치하는 사용자 지정 서비스를 작성하는 것은 복잡하고 오류가 발생하기 쉽기 때문에 좋은 생각이 아닙니다. 이 문서에서 설명하는 다른 방법을 사용하여 패치를 수행하는 것이 좋습니다. 그러나 부정 행위 방지 또는 불법 복제 방지 솔루션과 결합된 경우 사용자 지정 서비스가 필요할 수 있습니다. 이러한 서비스는 많은 수의 게임을 지원하고 패치 파일만 다운로드하고 대상 게임의 설치 디렉터리에만 쓸 수 있도록 설계되어야 합니다. 서비스가 작고, 공격에 취약한 최소 노출 영역을 가지며, 게임이 실행되지 않을 때 가능한 한 적은 수의 시스템 리소스를 사용하는 것이 중요합니다.

요약

궁극적으로 구현할 메서드를 결정하는 것은 사용자에게 달려 있습니다. 중요한 요인을 고려해야 합니다. 보안, 패치 빈도, 고객의 사용 편의성, 구현에 필요한 워크로드, 솔루션의 복잡성 및 플랫폼 기능 준수는 각 개발자가 특정 방법을 결정하기 전에 고려해야 하는 요소입니다.

UAC(사용자 계정 컨트롤)에 대한 Windows Vista 애플리케이션 개발 요구 사항에서 사용자 계정 보호에 대한 자세한 정보를 찾을 수 있습니다.