The Big Picture: A Window Plus Many Plug-Ins
The Control Panel is not one giant program. It is a small shell (a window that shows icons) plus many plug-ins (the applets). Each plug-in is a separate file. Windows finds them, lists them, and runs them when you click.
Think of a TV with apps: the TV (the shell) knows how to show a menu and start an app. The apps (applets) do the real work. New apps can be added without changing the TV.
This section answers three questions:
- What is inside an applet file? (Topic 2.1)
- Which program runs it? (Topic 2.2)
- How does Windows know the applet exists? (Topic 2.3)
2.1 .cpl Files: Applets Are DLLs With a Special Export
What it is: A classic applet is a file ending in .cpl ("Control Panel Library"). Under the hood, a .cpl file is a DLL.
Two terms first:
- DLL (Dynamic-Link Library): a file full of ready-made code that other programs can load and use. It cannot start by itself. It is like a toolbox that a program opens.
- Export: a named function inside a DLL that outsiders are allowed to call. It is like a labelled drawer in the toolbox.
A .cpl file is simply a DLL that offers one special export named CPlApplet. The Control Panel loads the DLL and calls CPlApplet again and again with messages, a bit like a conversation.
| Message the Control Panel sends | Plain meaning |
|---|---|
CPL_INIT | "Wake up. Are you ready?" |
CPL_GETCOUNT | "How many icons do you give me?" (one file can hold several applets) |
CPL_INQUIRE | "What are the name, text and icon of icon number N?" |
CPL_DBLCLK | "The user opened your icon. Show your window now." |
CPL_STOP | "Shut down that icon." |
CPL_EXIT | "I am unloading you. Clean up." |
Control Panel (the shell) main.cpl (the applet DLL)
│ │
│── CPL_INIT ───────────────────────────────>│ "ready?"
│── CPL_GETCOUNT ───────────────────────────>│ "I have 1 icon"
│── CPL_INQUIRE ────────────────────────────>│ "Mouse, with this icon"
│── CPL_DBLCLK (user clicked) ─────────────>│ shows the window
│── CPL_STOP / CPL_EXIT ────────────────────>│ closes and cleans up
Your own PC has many of them. Windows keeps its built-in applets in the System32 folder. You can list them (read-only) in PowerShell:
Get-ChildItem C:\Windows\System32\*.cpl | Select-Object NameTypical results (the list varies by Windows version and PC):
| File | Applet it hosts |
|---|---|
main.cpl | Mouse (and its pointer, button and wheel tabs) |
ncpa.cpl | Network Connections (the list of network adapters) |
appwiz.cpl | Programs and Features (uninstall programs) |
sysdm.cpl | System Properties (computer name, environment variables, performance) |
timedate.cpl | Date and Time |
intl.cpl | Region (date, time and number formats) |
powercfg.cpl | Power Options |
inetcpl.cpl | Internet Options |
mmsys.cpl | Sound (playback and recording devices) |
firewall.cpl | Windows Defender Firewall |
access.cpl | Ease of Access Center |
hdwwiz.cpl | Add Hardware wizard |
desk.cpl | Legacy Display. The real display settings have moved to the Settings app. |
Why DLL and not an .exe? A DLL starts fast, shares the host's memory, and can hold several icons. Also, the Control Panel can ask it questions (name, icon) without opening its window.
Windows tip: A .cpl file is just a renamed DLL, so you can double-click one to open its applet. Never download or open a .cpl from an email or an unknown website. It is real program code and can do anything a program can, which is why attackers have used .cpl files to spread malware.
2.2 The Control Panel Host Process
What it is: A host process is the running program that loads and runs a plug-in. Because a .cpl DLL cannot run by itself, some process must host it.
Who the host is depends on how you start the applet:
| You start it by... | Typical host |
|---|---|
| Opening the Control Panel window | The Explorer (explorer.exe) shows the Control Panel window itself, since it is a special folder in the shell |
Typing control | control.exe, a tiny launcher that asks the shell to open the Control Panel |
Typing control main.cpl | control.exe asks the shell library to run that applet |
Running rundll32.exe shell32.dll,Control_RunDLL main.cpl | rundll32.exe loads the DLL shell32.dll and calls its export Control_RunDLL, which loads the .cpl |
Double-clicking a .cpl file | Windows hands the file to the same machinery |
Two terms first:
rundll32.exe: a small Windows program whose only job is "load this DLL and call one of its exports for me". It is a general-purpose helper, not only for the Control Panel.shell32.dll: the big Windows library that draws the desktop, folders and file dialogs. It also contains the Control Panel's applet loader, in an export calledControl_RunDLL.
So the real picture is a chain of loaders:
you type: control main.cpl
│
▼
control.exe ──────────► shell32.dll : Control_RunDLL
(tiny launcher) (finds and loads the applet DLL)
│
▼
main.cpl (DLL)
exports CPlApplet
│
▼
Mouse Properties window appears
Because the applet runs inside the host's process, a badly written applet can crash its host. A crashing third-party applet is a classic cause of "Control Panel has stopped working".
32-bit and 64-bit. A 64-bit host can only load 64-bit DLLs. Old 32-bit applets (for example some very old Java or driver panels) need a 32-bit host. Windows has both versions of the helper programs for this reason, and you may see old applets listed in a special place for 32-bit programs. You do not need to manage this, only to know it exists.
Many modern applets are not DLL-based. Newer applets (such as Network and Sharing Center or Windows Firewall's main page) are built with the shell's own page technology and run inside the Explorer or another host. The "applet chain" idea in Section 3 still applies.
2.3 Applet Registration: How Windows Knows What Exists
What it is: Registration means writing an entry in the registry so Windows knows an applet exists, what it is called and where it lives.
The registry is Windows' big settings database (a later chapter covers it in depth). You can look at it with regedit (the Registry Editor). Look, but do not change.
There are two styles of applet, and each is found differently:
| Style | How Windows finds it |
|---|---|
Classic applet (.cpl DLL) | Windows looks for .cpl files in System32. A third-party DLL can also be listed in a registry key whose name is Cpls (under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel). |
| Modern applet (registered shell item) | It is a COM class with a long ID, and is listed under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace |
Another term: A COM class is a little object registered with Windows under a very long unique number called a CLSID or GUID, written like {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. Windows can create the object from the number alone.
For a modern applet, the registration works like this:
HKEY_LOCAL_MACHINE
└─ SOFTWARE
└─ Microsoft
└─ Windows
└─ CurrentVersion
└─ Explorer
└─ ControlPanel
└─ NameSpace
├─ {GUID-1} → this applet appears in Control Panel
├─ {GUID-2}
└─ {GUID-3} (one key per applet)
Each GUID there points to a normal class entry under HKEY_CLASSES_ROOT\CLSID\{GUID}. That entry holds the details: the display name, the icon, which category the applet belongs in, and which file contains the code. Many applets also carry an internal canonical name (a short name for people and scripts), such as Microsoft.PowerOptions. That is why this command works on most builds of Windows:
control /name Microsoft.PowerOptions
Some other canonical names you can use the same way (they work on most builds; some now redirect to the Settings app):
| Command | Applet |
|---|---|
control /name Microsoft.PowerOptions | Power Options |
control /name Microsoft.NetworkAndSharingCenter | Network and Sharing Center |
control /name Microsoft.ProgramsAndFeatures | Programs and Features |
control /name Microsoft.DevicesAndPrinters | Devices and Printers |
control /name Microsoft.WindowsFirewall | Windows Defender Firewall |
control /name Microsoft.AdministrativeTools | Administrative Tools (Windows Tools in Windows 11) |
There is also one shell path that opens the list of all applets at once. Paste it into the File Explorer address bar, or Win + R:
shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}
That long number is the CLSID of the "All Control Panel Items" folder.
Per-user entries too. The same ControlPanel\NameSpace path also exists under HKEY_CURRENT_USER. An installer can therefore add an applet for just one user.
Which category? Each applet states which category it belongs to. That is how the Category view in Figure 15.1 (Section 1) knows to put "Uninstall a program" under Programs. One applet can show up under several category headings.
2.4 Putting It Together: Categories, Applets and Files
Here is the whole family tree. Read it top to bottom: a category groups applets, and each applet is shown by code in a file.
Control Panel (control.exe + Explorer)
│
├─ System and Security
│ ├─ System ................... (sysdm.cpl for the classic properties dialog)
│ ├─ Power Options ............ (powercfg.cpl)
│ ├─ Windows Defender Firewall (firewall.cpl)
│ └─ Administrative Tools ..... (shortcuts to .msc tools)
│
├─ Network and Internet
│ ├─ Network and Sharing Center (shell item)
│ │ └─ Change adapter settings → ncpa.cpl
│ └─ Internet Options ......... (inetcpl.cpl)
│
├─ Hardware and Sound
│ ├─ Devices and Printers ..... (shell item)
│ ├─ Mouse .................... (main.cpl)
│ └─ Sound .................... (mmsys.cpl)
│
├─ Programs
│ └─ Programs and Features .... (appwiz.cpl)
│
├─ User Accounts .................. (shell item, netplwiz)
│
└─ Clock and Region
├─ Date and Time ............ (timedate.cpl)
└─ Region ................... (intl.cpl)
Notice that one category page is not a file. It is just a grouping. Only the applets below it are real code.
2.5 Seeing the Architecture on Your Own PC
Three read-only checks prove everything above:
- List the files:
Get-ChildItem C:\Windows\System32\*.cplshows the classic applet DLLs. - Open one by file name:
Win + R, typeappwiz.cpl, press Enter. - Look at the registry list: open
regedit, go toHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace, and expand it. Each GUID key is one modern applet. Do not edit or delete anything there. Removing a key would simply make that applet vanish from the Control Panel.
Summary
| Term | Plain meaning |
|---|---|
.cpl file | A DLL that is a Control Panel applet |
CPlApplet | The special export a .cpl DLL offers; the shell sends it messages |
| DLL | A file of shared code that a program loads and uses |
| Export | A named function in a DLL that others may call |
| Host process | The running program that loads the applet (control.exe, rundll32.exe or Explorer) |
rundll32.exe | A helper that loads a DLL and calls one export |
Control_RunDLL | The shell32.dll export that loads a .cpl applet |
| COM class / CLSID | A registered object identified by a long GUID |
ControlPanel\NameSpace | Registry key listing the modern applets |
| Canonical name | Short name of an applet used by control /name |