Patchen von Spielsoftware in Windows XP, Windows Vista und Windows 7
Windows Vista und Windows 7 verfügen über eine Reihe von Features, die das Betriebssystem sicherer machen. Zusätzliche Sicherheit bedeutet, dass das Anwenden von Patches auf Software nicht so einfach ist wie in der Vergangenheit. In diesem Artikel werden einige Patchmethoden untersucht, die sowohl in Windows Vista und Windows 7 als auch in Windows XP gut funktionieren.
Es gibt zwei Standard Kategorien von Spielen, die Patches erfordern:
- Spiele, die nur gelegentliche Patches erfordern, z. B. die meisten Offline-Spiele.
- Spiele, die häufige Patches erfordern, z. B. die meisten Online-Spiele.
Dieser Artikel bietet auch eine kurze Einführung in die Benutzerkontensteuerung (User Account Control, UAC), die als Hintergrund zu den Rechten dient, die Entwickler erwarten können, dass Benutzer in Windows Vista und Windows 7 über die Rechte verfügen.
- Benutzerkontensteuerung
- Spiele, die nur gelegentliche Patches erfordern
- Spiele, die häufige Patches erfordern
- Zusammenfassung
Benutzerkontensteuerung
Windows Vista und Windows 7 verfügen über zwei primäre Benutzerkonten: Standardbenutzer und Administrator. Ein Standardbenutzerkonto weist mehrere Zugriffsbeschränkungen auf. Beispielsweise können keine Daten in das Dateisystem in %SystemDrive%\Programme oder in die Registrierung im HKEY_LOCAL_MACHINE geschrieben werden. Dies hat Auswirkungen auf das Anwenden von Patches auf ein Spiel, wenn es an einem schreibgeschützten Speicherort installiert ist. Im Gegensatz zu Windows XP ist das Standardbenutzerkonto in Windows Vista und Windows 7 viel gebräuchlicher. Standardbenutzerkonten sind auch für wichtige Features des Betriebssystems erforderlich, z. B. die Kindersicherung. Die Kindersicherung erfordert, dass das Kinderkonto Standardbenutzer ist, und das Erhöhen eines solchen Kontos auf Administrator für ein einziges Spiel verhindert, dass die Kindersicherung mit allen anderen Spielen funktioniert. Daher ist es wichtig, dass Spiele für Standardbenutzer entworfen werden.
Windows Vista und Windows 7 verfügen über ein neueres Modell für Benutzerrechte, um zu verhindern, dass Benutzer Programme ausführen, die versuchen, Vorgänge auszuführen, die der Benutzer nicht beabsichtigt oder autorisiert. Zu diesem Zweck ermöglicht die Benutzerkontensteuerung (früher als Benutzerkonto mit den geringsten Rechten oder LUA bezeichnet) Benutzern, den Computer die meiste Zeit mit Rechten auf niedriger Ebene zu betreiben, während sie bei Bedarf problemlos Anwendungen ausführen können, die Rechte auf höherer Ebene erfordern. Dies bedeutet, dass sowohl Standardbenutzerkonten als auch Administratorkonten Anwendungen mit Standardbenutzerrechten ausführen, aber nur Administratorkonten die Möglichkeit haben, Anwendungen erhöhte Rechte zu gewähren. Das Betriebssystem bittet Benutzer mit Administratorkonten um explizite Zustimmung, bevor eine Anwendung mit erhöhten Rechten ausgeführt wird. Wenn ein Programm, das Administratorrechte erfordert, für ein Standardbenutzerkonto ausgeführt wird, fordert das System die Administratorgenehmigung auf.
Spiele, die nur gelegentliche Patches erfordern
Einige Spiele erfordern nur wenige Patches während ihres gesamten Lebenszyklus. Zwei Methoden, die Sie für diese Häufigkeit des Patchens verwenden können, sind das Verteilen von Patches als Windows Installer-Pakete, die im Allgemeinen keine Administratorrechte erfordern, oder eine andere Art von Verteilung zu verwenden, die Spieledateien direkt ändert.
Hinweis
Unabhängig davon, ob ein Spiel häufig gepatcht werden muss, erfordern Anwendungen in der Regel die Installation oder Entfernung von Administratorrechten.
Methode 1: Verwenden von Windows Installer für gelegentliche Patches
Bei dieser Methode wird ein Windows Installer verwendet, um ein Paket (.msi Datei) zu installieren, und ein Windows Installer-Patch (MSP-Datei) wird verteilt, um Patches zu installieren. Das Paket muss über eine MsiPatchCertificate-Tabelle verfügen, und der Patch muss von einem Zertifikat in der Tabelle digital signiert sein. Weitere Informationen zur digitalen Signatur finden Sie unter Authenticode Signing für Spieleentwickler.
Weitere Details und Anforderungen für die Verwendung dieser Patchmethode finden Sie in der Windows Installer-Dokumentation:
Der Nachteil dieser Methode besteht darin, dass das Patchen Administratorrechte erfordert, wenn das Spiel nicht von Wechselmedien unter Windows XP installiert wurde. Dies ist jedoch wahrscheinlich nicht zu restriktiv, da die meisten Benutzer Administratoren unter Windows XP und die Einschränkung auf Software, die von Wechselmedien installiert wird, unter Windows Vista nicht vorhanden ist.
Der Standard Vorteil dieser Methode besteht darin, dass Patches von einem Standardbenutzerkonto angewendet werden können, ohne dass eine Eingabeaufforderung und Authentifizierung für erhöhte Rechte erforderlich ist. Dies bietet eine bessere Benutzerfreundlichkeit, da ein Benutzer mit einem Standardbenutzerkonto zum Spielen eines Spiels keine Person mit einem Administratorkonto bitten muss, den Patch zu installieren oder dem Benutzerkonto Standard permanente Administratorrechte bereitzustellen.
Es ist möglich, dass diese Methode für Spiele funktioniert, die häufige Patches erfordern, aber der Mehraufwand für die Verwendung von Windows Installer-Paketen in Bezug auf die Buildintegration und die Unterstützung einer großen Anzahl von Dateien kann diese Methode weniger wünschenswert machen als andere.
Methode 2: Erfordern von Administratorrechten zum Anwenden von Patches
Bei dieser Methode erfordert die ausführbare Datei, die den Patch anwendet, Administratorrechte zum Ausführen. Mit Administratorrechten kann die ausführbare Patchdatei direkt die Spieldateien ändern, die sich in %SystemDrive%\Programme befinden.
Der Vorteil dieser Methode ist ihre Einfachheit. Diese Methode ist jedoch ungeeignet, wenn das Spiel häufige Patches benötigt, denn wenn ein Benutzer mit einem Standardbenutzerkonto ein Spiel spielen möchte, das häufige Patches erfordert, z. B. ein massives Online-Spiel mit mehreren Spielern, hat dieser Benutzer zwei Möglichkeiten:
- Rufen Sie einen Administrator zum Anmelden und Patchen des Spiels ab, was für beide Seiten unpraktisch sein kann.
- Lassen Sie sein Konto dauerhaft mit Administratorrechten erhöhen.
Hinweis
Letztere Lösung schwächt nicht nur die Sicherheit des Systems als Ganzes, sondern verhindert, dass wichtige Features wie die Kindersicherung funktionieren.
Bei der Implementierung dieser Methode muss sich die ausführbare Datei, die den Patch anwendet, von der ausführbaren Datei des Spiels unterscheiden. Das Manifest der ausführbaren Datei zum Patchen sollte requireAdministrator für requestedExecutionLevel angeben, um sie als Anwendung zu bezeichnen, die Administratorrechte erfordert. Weitere Informationen dazu finden Sie unter Bewährte Methoden und Richtlinien für Entwickler für Anwendungen in einer Umgebung mit den geringsten Berechtigungen unter Anwendungsmanifestschema.
Wenn diese Methode verwendet wird, kann die ausführbare Datei auch mit den Einstellungen im Manifest in zwei Fällen ohne Administratorrechte gestartet werden:
- Wenn das Betriebssystem Windows XP ist und das Konto des Benutzers ein eingeschränkter Benutzer ist.
- Wenn das Betriebssystem Windows Vista oder Windows 7 ist, ist das Konto des Benutzers ein Standardbenutzer, und die UAC ist deaktiviert.
Beides sind seltene Consumerszenarien. Der Patcher sollte jedoch über Administratorrechte verfügen und isUserAnAdmin aufrufen. wenn diese Funktion FALSE zurückgibt, wird die Fehlermeldung "Administratorrechte sind erforderlich" angezeigt.
Insgesamt ist Methode 1 für Spiele vorzuziehen, die über ihre Lebensdauer nur wenige Patches benötigen.
Spiele, die häufige Patches erfordern
Viele internetbasierte Spiele werden kontinuierlich verbessert und erfordern in der Regel regelmäßige Patches. Für diese Spiele können Patches pro Benutzer oder pro Computer angewendet werden, wie in den folgenden Themen erläutert. Andere mögliche Lösungen sind das Ändern der ACL, die %SystemDrive%\Programme schützt, oder das Erstellen eines benutzerdefinierten Diensts.
Methode 3: Installieren Per-User
Ein empfohlener und einfacher Ansatz besteht darin, das gesamte Spiel in einem benutzerspezifischen Unterordner des lokalen Anwendungsdatenordners zu installieren, den Sie finden können, indem Sie SHGetFolderPath mit CSIDL_LOCAL_APPDATA aufrufen. Ein Beispielpfad ist C:\Documents and Settings\user name\Local Settings\Application Data\ExampleGame. Ein solcher Speicherort ermöglicht es einer Anwendung, die mit Standardbenutzerrechten ausgeführt wird, Spieldateien direkt zu ändern.
Dieser Ansatz hat jedoch einen Nachteil, wenn ein Computer mehrere Benutzer hat: Jeder Benutzer hat eine Kopie des Spiels installiert, und patches müssen von jedem Benutzer heruntergeladen und angewendet werden. Dies verschwendet nicht nur Zeit und Speicherplatz der Benutzer, sondern erhöht auch die Nutzung der Netzwerkbandbreite für den Server, der Patches bereitstellt. Da jede Anwendung mit Standardbenutzerrechten das Spiel ändern kann, sind ausführbare Spiele weniger geschützt. ob dies akzeptabel ist oder nicht, liegt beim Spielehersteller.
Methode 4: Installieren an einem allgemeinen Per-Computer Speicherort
Eine andere Methode besteht darin, die nicht ausführbaren Spieldaten in einem Unterverzeichnis des pfads zu installieren, der von SHGetFolderPath CSIDL_COMMON_APPDATA angegeben wird. Ein Beispielpfad ist C:\Documents and Settings\All Users\Application Data\ExampleGame. Dies ist ein freigegebener Speicherort für alle Benutzer, der von Anwendungen geändert werden kann, die mit Standardbenutzerrechten ausgeführt werden. Diese Methode minimiert die Notwendigkeit, große Patches erneut zu verwenden, wenn das Spiel von mehreren Konten aus gespielt wird. Ausführbare Dateien für das Spiel sollten in %SystemDrive%\Programme gespeichert werden, um das Risiko für andere Konten auf dem System zu minimieren. Die ausführbaren Dateien sollten die Integrität des neuen Inhalts im freigegebenen Verzeichnis überprüfen, da dieser Speicherort von einem Programm oder einer Person mit Standardbenutzerrechten geändert werden kann. Erwägen Sie , MapFileAndCheckSum zu verwenden, um eine Prüfsumme der Dateien zu berechnen.
Diese Methode hat den Vorteil, dass sie sowohl unter Windows XP als auch unter Windows Vista gleichermaßen funktioniert und keine Administratorrechte erfordert.
Weitere Möglichkeiten
Außerhalb der bereits besprochenen Methoden besteht eine weitere Möglichkeit darin, die ACL von %SystemDrive%\Programme\Game Folder\ bei der Installation des Spiels zu ändern, sodass ein Patchtool direkt in die Dateien des Spiels schreiben kann, auch wenn es mit Standardbenutzerrechten ausgeführt wird. Dies ist zwar nicht schwierig, umgeht jedoch den Sicherheitsschutz, den das System für die Dateien des Spiels bietet, und bietet böswilligen Programmen die Möglichkeit, den Inhalt des Verzeichnisses zu ändern. Dies ist nicht ratsam, und es wird dringend empfohlen, stattdessen eine Alternative zu verwenden.
Eine letzte Möglichkeit besteht darin, einen benutzerdefinierten Dienst zu schreiben. Im Allgemeinen ist das Schreiben eines benutzerdefinierten Diensts zum Patchen von Spielen keine gute Idee, da dies kompliziert und fehleranfällig ist. Es wird empfohlen, das Patchen mithilfe anderer Methoden auszuführen, die in diesem Artikel erläutert werden. Ein benutzerdefinierter Dienst kann jedoch in Kombination mit Anti-Cheat- oder Antipiraterie-Lösungen erforderlich sein. Ein solcher Dienst sollte eine große Anzahl von Spielen unterstützen und so konzipiert sein, dass er nur die Patchdateien herunterladen und nur in das Installationsverzeichnis für das Zielspiel schreiben kann. Es ist wichtig, dass der Dienst klein ist, über eine minimale Oberfläche verfügt, die anfällig für Angriffe ist und so wenige Systemressourcen wie möglich verwendet, wenn das Spiel nicht ausgeführt wird.
Zusammenfassung
Letztendlich liegt es an Ihnen, zu entscheiden, welche Methode implementiert werden soll. Sie müssen die Faktoren abwägen, die für Sie wichtig sind. Sicherheit, Häufigkeit des Patchens, Benutzerfreundlichkeit durch den Kunden, erforderliche Implementierungsworkload, Komplexität der Lösung und Kompatibilität von Plattformfeatures sind die Faktoren, die jeder Entwickler berücksichtigen muss, bevor er sich für eine bestimmte Methode entscheidet.
Weitere Informationen zum Schutz von Benutzerkonten finden Sie unter Windows Vista Application Development Requirements for User Account Control (UAC).