# CPL (formato)

No sistema operacional Windows, a extensão CPL é atribuída aos Control Panel Applets, que são miniaplicativos utilizados pelo Painel de Controle, introduzidos no Windows 3.x, mas ainda utilizados em versões atuais como o Windows 7. O Painel de Controle carrega estes miniaplicativos e exibe ícones para que estes sejam acessados facilmente.

## Estrutura

Um arquivo CPL é uma DLL (biblioteca de vínculo dinâmico) ou um EXE e por isso herda toda a estrutura já definida para o formato PE. A diferença mais notável é que os CPL normalmente possuem somente uma função exportada chamada CPlApplet, enquanto as DLL em geral possuem várias funções exportadas (disponíveis para serem chamadas a partir de outro programa).

## Execução

Quando a janela do Painel de Controle é aberta, todos os arquivos CPL na pasta de sistema do Windows são lidos e seus applets são carregados e exibidos na janela do Painel de Controle. Cada arquivo CPL pode conter um ou mais applets. É possível verificar isso com os métodos de execução abaixo:

### Usando o control.exe

O programa control.exe (que carrega o Painel de Controle) utiliza a seguinte sintaxe para carregar applets CPL:
Onde n é o índice do applet dentro do arquivo, começando em 0 (zero) e t é o índice da aba deste applet, para applets com mais de uma aba, também começando em 0 (zero). Por exemplo, para carregar o primeiro applet do arquivo main.cpl posicionado na primeira aba, pode-se comandar:
Para ver a segunda aba deste mesmo applet, basta:
Já para ver o segundo applet:
Caso o índice de applet ou aba seja inválido ou omitido, o Windows busca o applet padrão do arquivo e o exibe sem emitir erros.

### Utilizando a função Control_RunDLL

Há ainda a possibilidade de se executar um arquivo CPL utilizando diretamente uma função da shell32.dll chamada Control_RunDLL. Este é o método que o Windows utiliza internamente e também é o que ocorre quando é dado um duplo-clique num arquivo CPL. Exemplo:
O comando acima abre as propriedades de data e hora do Windows diretamente. Por ter essa característica, arquivos CPL podem ser executados diretamente no sistema operacional, bastando para isso um duplo-clique neles. Sendo assim, o efeito é similar aos arquivos EXE e à essa característica se deve a fama de que arquivos CPL são "DLLs que executam com dois cliques".

### Utilizando o objeto Shell.Application

Um script em VBScript ou JScript pode carregar um CPL através do método ControlPanelItem de um objeto Shell.Application. O código abaixo carrega o applet de configuração de joysticks:

#### VBScript
## Segurança

Por ser um formato flexível e que pode ser executado com um duplo-clique, criadores de ameaças também criam malware utilizando o formato CPL. É comum no Brasil usuários receberem e-mails falsos com links para downloads de arquivos comprimidos com um mais arquivos CPL dentro. Em geral, este tipo de arquivo não é transferido via rede com frequência pois seu maior uso está no Windows em si, portanto muito cuidado é necessário antes de dar um duplo clique em arquivos CPL recebidos por e-mail ou que tenham sido baixados na internet.
Por ser um tipo de arquivo pouco conhecido, mesmo por analistas de segurança experientes, vários programas como proxy firewalls e outras soluções de segurança não tratam o download de um arquivo CPL com a devida atenção.
O bloqueio de download de arquivos deste tipo deve ser tratado com cuidado, no entanto, visto que alguns fabricantes de hardware distribuem arquivos CPL juntamente com programas e drivers de dispositivo.

## Applets nativos
### Windows 3.x

| Nome do arquivo | Nome do ícone no Painel de Controle |
| CPWIN386.CPL | Avançado |
| DRIVERS.CPL | Controladores |
| MAIN.CPL | Cores, Fontes, Portas, Mouse, Área de Trabalho, Teclado, Impressoras, Internacional, Data e Hora e Rede (se instalada) |
| SND.CPL | Som |

### Windows XP

| Nome do arquivo | Nome do ícone no Painel de Controle |
| Access.cpl | Ações de acessibilidade |
| Appwiz.cpl | Adicionar ou remover programas |
| Desk.cpl | Vídeo |
| Hdwwiz.cpl | Adicionar hardware |
| Inetcpl.cpl | Opções da Internet |
| Intl.cpl | Opções regionais e de idiomas |
| Irprops.cpl | Dispositivos Infra-vermelho |
| Joy.cpl | Controladores de jogo |
| Main.cpl | Mouse |
| Mmsys.cpl | Sons e dispositivos de áudio |
| Ncpa.cpl | Conexões de rede |
| Nusrmgr.cpl | Contas de usuário |
| Nwc.cpl | Serviços de Gateway para NetWare |
| Odbccp32.cpl | Fontes de dados (ODBC), dentro de "Ferramentas administrativas" |
| Powercfg.cpl | Opções de energia |
| Sapi.cpl | Fala |
| Sysdm.cpl | Sistema |
| Telephon.cpl | Opções de telefone e modem |
| Timedate.cpl | Data e hora |