giovedì 1 ottobre 2009

RUNDLL32.EXE e le funzioni nascoste di Windows

Rundll32.Exe è uno dei file più importanti di Windows perchè permette di interagire molto profondamente con le librerie di sistema. grazie a questo file è possibile avere accesso a più di 200 funzioni nascoste all'interno di Windows, alcune davvero molto utili.

In Windows ci sono parecchi file .dll. Questi file sono delle librerie contenenti vere e proprie "collezioni" di funzioni del sistema operativo e delle applicazioni installate. Queste però possono essere usate dai programmi, ma non direttamente dall'utente. E qui entra in gioco Rundll32.Exe, che serve come interfaccia per utilizzare immediatamente le funzioni contenute nelle librerie.

Il vantaggio nell utilizzare tali funzioni direttamente dalle Dll è evidente: l'utente può accedere più velocemente alle utili funzioni per esempio salvandole come collegamenti sul desktop o creando degli script.


Riporto di seguito alcune (è impossibile riportarle tutte: sono oltre 200!!!) interessanti funzioni richiamabili direttamente attraverso rundll.exe:

1.

Lanciare un'applicazione a scelta:

rundll32 SHELL32.DLL,ShellExec_RunDLL " + AbsolutePath (es:
rundll32 SHELL32.DLL,ShellExec_RunDLL winword.exe)

2.

Visualizzare "Apri con... per" il "file":

Rundll32.exe shell32.dll, OpenAs_RunDLL

3.

Aprire la finestra Rimozione sicura dell'hardware:

rundll32.exe shell32.dll, Control_RunDLL hotplug.dll


4.

Impostare il computer in modalità stand-by:

Rundll32.exe PowrProf.dll,SetSuspendState

5.

Bloccare il computer:

Rundll32.exe user32,LockWorkStation


Per una descrizione completa (in inglese) delle varie funzioni consultare la pagina http://dx21.com/coding/libraries/rundll32/default.aspx;

Il comando Run32.dll non fa solo tutto questo ma nasconde anche altre sorprese: tramite esso è possibile aprire direttamente qualsiasi elemento del Pannello di controllo e persino attivare immediatamente la scheda desiderata.
Un esempio concreto: digitando nel prompt di dos la seguente linea di comando:
rundll32.exe shell32.dll, Control_RunDLL main.cpl,@0,2
si apre la finestra delle Proprietà del Mouse con in primo piano la scheda Opzioni puntatore



I comandi usano il seguente formato:
RUNDLL32.EXE [NomeDLL],[Punto di ingresso] [Argomento opzionale]
Il nome della Dll non deve contenere alcuno spazio e deve seguire il vecchio formato DOS 8.3. Esso è seguito da una virgola, dopo la quale, senza alcuno spazio, è indicato il punto di ingresso nella Dll. Va ricordato che Rundll32.Exe fa distinzione tra maiuscole e minuscole. I comandi possono essere digitati direttamente nel Prompt o nella finestra Esegui (Start/Esegui) nel menù di Windows, oppure possono essere inseriti in script per l'elaborazione batch, automatizzando le operazioni.

Alcuni file Cpl contengono più di una applet (finestre di dialogo del Pannello di controllo). Per selezionare la finestra di dialogo desiderata in questo caso inserire il suo numero di riferimento come parametro, con il prefisso "@". Ricordare che la numerazione inizia sempre con 0. Se non si imposta tale parametro, Windows aprirà la prima delle applet disponibili.
Per impostare la scheda che si desidera visualizzare inserirne il numero di riferimento come secondo parametro dopo una virgola, sempre ricordando che la prima scheda è numerata 0 e non 1. Per esempio con "@0,2" viene aperta la terza scheda della prima finestra di dialogo di un file Cpl

Nell'esempio fatto sopra:
rundll32.exe shell32.dll, Control_RunDLL main.cpl,@0,2
Questa linea di comando apre le Proprietà del Mouse e mostra la scheda Opzioni puntatore che è appunto la terza disponibile, corrispondente alla numerazione 2 partendo da 0. Nella tabella al termine di questo tip sono elencati i file Cpl che consentono l'accesso alle principali finestre di dialogo del Pannello di controllo.