# Systemsteuerung

Die Systemsteuerung ist ein zentrales Hilfsmittel der grafischen Benutzeroberfläche von Windows, mit welcher die Einstellungen des Systems den persönlichen Bedürfnissen angepasst werden können. Die Systemsteuerung ist bei Windows-Betriebssystemen – mit der Einführung des Explorers – eine Art virtueller Ordner, welcher vom Betriebssystem aus einer Reihe Control-Panels zusammengestellt wird (Weiteres dazu unten, im Abschnitt CPL-Datei).
In Windows 10 hat die App „Einstellungen“ die Systemsteuerung großteils abgelöst, obwohl letztere auch noch in Windows 11 Bestandteil des Betriebssystems ist. Seit 2024 gilt die Systemsteuerung offiziell als „veraltete Funktion“, die entfernt werden soll.

## Aufgaben

In der Systemsteuerung kann man im Wesentlichen folgende Änderungen machen:
* Systeminformationen (SYSDM.CPL).
* Darstellung und Anpassung: Die Darstellung des Windows-PCs ändern (Bildschirmauflösung, Darstellung der Fenster, der Icons oder den Desktop-Hintergrund ändern) (DESK.CPL).
* diverse Interfaces konfigurieren: Maus (MAIN.CPL), Joystick (JOY.CPL).
* Drucker und andere Hardware: Drucker und andere Hardware installieren, deinstallieren oder aktualisieren (DESK.CPL, HDWWIZ.CPL – Hardwareassistent), Energieoptionen (POWERCFG.CPL).
* Netzwerk- und Internetverbindungen: Netzwerkkonfiguration, Neue Internetverbindungen einrichten, löschen oder (nur Windows XP) die Windows-Firewall deaktivieren oder die Einstellungen dieser ändern (NCPA.CPL – Netzwerk und DFÜ-Verbindungen, INETCPL.CPL – Eigenschaften des Internet Explorers und anderes).
* Benutzerkonten (nur Windows NT): Ein neues Benutzerkonto erstellen oder vorhandene Benutzerkonten löschen.
* Software: Übersicht über die vorhandene Software mit Möglichkeiten zur Installation oder Deinstallation neuer Software (APPWIZ.CPL).
* Datums-, Zeit-, Sprach-, und Regionaleinstellungen: Zeit und Zeitzone bzw. Datum ändern, Systemsprache ändern (TIMEDATE.CPL).
* Sounds, Sprachein-/ausgabe und Audiogeräte: Ändern der Windows-internen Sounds bzw. Einstellungen für Sprachein-/ausgabegeräte konfigurieren (INTL.CPL, MMSYS.CPL).
* Eingabehilfen: Einstellen der Eingabehilfen für beeinträchtigte Computernutzer, wie zum Beispiel Bildschirmlupe (ACCESS.CPL).
* Stift- und Fingereingabe, ab Windows 7 (TabletPC.CPL).
* Wartungscenter: Hinweise zur Sicherheit und Wartung des Systems (wscui.CPL).
* Leistung und Wartung: Den Computer warten, wie zum Beispiel Defragmentierung oder Datenträgerbereinigung ausführen.
* Geplante Tasks: Zeitpläne für Aktionen erstellen.
* Sicherheitscenter (nur XP): Automatische Aktualisierungen konfigurieren, bzw. Einstellungen der Windows-Firewall konfigurieren. Außerdem ist dort eine Übersicht über eine eventuell vorhandene Personal Firewall oder ein Antivirenprogramm vorhanden.
Des Weiteren finden sich noch einige andere Module für die Konfiguration von Geräten wie Maus, Telefon, Scanner und ähnlichem.
Daneben kann sich auch Software von Drittanbietern mit einer passenden CPL-Datei in der Systemsteuerung eintragen, diese Technik verwenden etwa Java, QuickTime oder diverse Virenscanner.

## CPL-Datei

In CPL-Dateien sind die auch sogenannten Control-Panels (entlehnt aus dem englischen control panel) beschrieben. Diese sind inhaltlich nichts anderes als umbenannte DLL-Dateien. Durch die so veränderte Dateiendung wird es möglich, automatisch alle Dialogboxen in der Übersichtsdarstellung „Systemsteuerung“ des Explorers zusammenzustellen – Näheres im Abschnitt unter Technische Einzelheiten.
Das Systemverzeichnis %SystemRoot%\system32, in dem sich die CPL-Dateien befinden, ist bei einer Standard-Installation üblicherweise C:\WINDOWS\system32, bei Windows NT bis Version 4.0 war es C:\WINNT\system32.
Dateien mit der Endung CPL könnten der Anwendung %SystemRoot%\system32\control.exe übergeben werden, wodurch zumindest das Standard-Applet der CPL-Datei gestartet würde. Von diesem Konzept aus den 1990ern ist Microsoft in diesem Zusammenhang aber schon seit Langem abgekommen – die CPL-Dateien enthalten eine Reihe weiterer Dialogboxen, welche über diese Zuordnung nicht zugänglich sind. Tatsächlich erfolgt der Aufruf inzwischen in der Form rundll32.exe shell32.dll,Control_RunDLL PanelDatei,Argumente, wobei es völlig unerheblich ist, ob die Endung der PanelDatei .CPL oder .DLL lautet. Unter rundll32.exe sind auch Beispiele aufgeführt.
CPL-Dateien sollten genauso wie andere DLL- und EXE-Dateien gegen Manipulationen (Malware) geschützt werden, indem nur Administratoren (und noch nicht einmal jedem Administrator) Schreibrecht gestattet wird.

## Technische Einzelheiten

CPL/DLL verfügen alle über den Einstiegspunkt CPlApplet. Das CPlApplet ist von denjenigen zu programmieren, die die CPL-Datei bereitstellen. Dies kann jeder Software- und vor allem Hardware-Anbieter sein, der sein Produkt komfortabel über die Systemsteuerung bedienen lassen möchte. Es erfolgt jeweils eine ganze Serie von Aufrufen des CPlApplet.

### Aufruf

Die CONTROL.EXE macht heute nichts anderes mehr als die Systemsteuerung (und deren virtuellen Ordner) aufzurufen. Dieser auch – beispielsweise über Cmd – einfacher mit control aufrufbare Befehl ruft wiederum den Befehl rundll32.exe shell32.dll,Control_RunDLL auf und reicht gegebenenfalls mitangegebene Übergabewerte an diesen langen Befehl hindurch. In den 1990ern waren darin zusätzlich noch einige Standard-CPL wie MAIN, DESK, INTL, PORTS, TIMEDATE mit englischen Schlüsselwörtern der einzelnen Hauptdialoge voreingestellt.

#### Weitere (God Mode)

God Mode (deutsch: „Gott-Modus“; auch als God-Mode oder GodMode) ist eine dem Computerspieler-Jargon entlehnte inoffizielle Bezeichnung für eine Funktion unter Windows Vista und folgenden Versionen, alle Einstellungen der Systemsteuerung zu sehen. Es ist eine Auflistung aller erreichbaren Funktionen zusätzlich zu den Haupt-Systemelementen. Obwohl seit Windows Vista verfügbar und in den Grundzügen von Microsoft selbst dokumentiert, wurde diese Möglichkeit den meisten Nutzern erst kurz nach Erscheinen von Windows 7 bekannt. Unter Namen, die eine der God-Mode-Variationen enthalten, kursieren diverse Programme, die diese Funktion bereitstellen wollen. Von Microsoft selbst wird die Funktionalität als „Using File System Folders as Junction Points“ (deutsch „Verwendung von Dateisystemordnern als Verknüpfungspunkte“) bezeichnet.
Die Wirkungsweise beruht auf einer speziellen Klassen-ID (englisch Class ID, kurz CLSID). Microsoft veröffentlichte die CLSID’s für die einzelnen Funktionen der Systemsteuerung, nicht jedoch die CLSID für den sogenannten Gott-Modus, so dass sich diese unangekündigt ändern könnte. Bis inklusive Windows 10 ist sie aber identisch und wirksam. Diese CLSID ist {ED7BA470-8E54-465E-825C-99712043E01C} (ob Groß- oder Kleinschreibung, ist egal).

##### Spezieller Ordner

    Das ist die sehr häufig in vielen Anleitungen aufgeführte und von den meisten Programmen verwendete Methode.
    Erzeuge einen neuen Ordner an beliebiger Stelle mit folgendem Muster:
    <Beliebiger Name>.{ED7BA470-8E54-465E-825C-99712043E01C}
    Der Name <Beliebiger Name> kann frei gewählt werden, wichtig ist die Erweiterung mit der CLSID. Dieser Ordner kann anschließend direkt oder über eine Verknüpfung geöffnet werden.

##### Spezielle Verknüpfung mit dem Windows-Explorer

    Erzeuge eine Verknüpfung mit der explorer.exe oder kopiere eine vorhandene aus dem Systemmenü und ändere sie anschließend so, dass sie folgenden Inhalt hat:
    explorer.exe shell:::{ED7BA470-8E54-465E-825C-99712043E01C}

### Gesamtliste

Auf eine bestimmte „Abfrage“-Aufrufserie von CPlApplet wird von dieser DLL eine Liste der von ihr bereitgestellten Hauptdialog-Codes mit Verweisnummern auf deren jeweiligen landessprachlichen Klarnamen, Beschreibungsdetails und Icon zurückgegeben (CPLINFO, NEWCPLINFO).
rundll32 shell32,Control_FillCache_RunDLL geht (genauso wie jedes Mal mit Öffnen von „Systemsteuerung“) durch alle %SystemRoot%\system32\*.cpl durch, sammelt diese Darstellungsinformationen sowie deren zugehörige Datei einschließlich Aufrufcode. Bis etwa Windows XP wurde das Ergebnis auch im Registrierungs-Schlüssel HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Controls Folder in dem Feld Presentation Cache zur beschleunigten Darstellung gespeichert. Da sich jedoch Icons und Textelemente situationsabhängig mit jedem Aufruf ändern dürfen, wird der Zwischenspeicher auf den heutigen schnellen Maschinen aber (standardmäßig) nicht mehr benutzt, der Schlüssel ist jedoch auf Benutzerebene (HKCU\…) weiterhin vorhanden.
rundll32 shell32,Control_RunDLL (ohne Parameter) öffnet ein spezielles Explorer-Fenster Systemsteuerung und stellt das (aktualisierte) Gesamtergebnis zur Auswahl bereit. Währenddessen sind alle aufgelisteten CPL-Dateien geöffnet. Beim Schließen der Systemsteuerung werden alle CPlApplet erneut mehrfach aufgerufen.
CPL-Dateien, die als „versteckt“ markiert sind, bleiben anscheinend dauerhaft aus der Systemsteuerung ausgeblendet. CPL-Dateien, auf die nicht Jeder oder Benutzer Leserechte hat, sondern die lediglich Administratoren lesen und ausführen können, verraten ihren Icon und Titel nicht und erscheinen deshalb für Normalbenutzer nicht in der Systemsteuerung. Das hilft dann der Übersichtlichkeit, wenn normale Benutzer ohnehin die Steuerungsoptionen nicht ändern könnten und die aktuellen Einstellungen auch gar nicht verstehen möchten.

### Ausführung

Durch interaktives Anklicken eines Eintrags im Fenster Systemsteuerung oder rundll32.exe shell32,Control_RunDLL PanelDatei,Argumente oder selbstgeschriebenen direkten Aufruf erfolgt die entsprechende Aufrufserie von CPlApplet im Modus Ausführen. Als Argument wird CPlApplet der Code der gewünschten Hauptdialogbox übergeben, ein weiterer Code mag beispielsweise einen Registerkarten-Tab bezeichnen.
Der landessprachliche Klarname lässt sich anscheinend ebenfalls als Aufrufparameter von Control_RunDLL verwenden.
Es erfolgt der jeweilige Benutzerdialog und daraufhin die entsprechende Speicherung und Umsetzung der gewünschten Einstellungen – wie auch immer.