Visual Basic Simple
Autorun e suo funzionamento
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo

Al fine di semplificare all'utente finale l'utilizzo di un CD contenente un determinato progetto si utilizza sempre più spesso inserire un Autorun (detto anche Autoplay) che avvii un programma di presentazione semplice da utilizzare.

In situazioni normali l'Autorun scatta in maniera automatica all'inserimento del CD nel lettore ma in talune situazioni esso potrebbe essere stato disabilitato, ad esempio da alcuni programmi di masterizzazione di CD. È anche possibile evitare volontariamente l'esecuzione dell'Autorun semplicemente tenendo premuto il tasto SHIFT all'inserimento del CD.

Vedremo in questo articolo come programmare un Autorun e regolare le impostazioni del computer per usufruire del supporto di Autorun.

Sebbene l'utilizzo di un Autorun si riveli utile quasi soltanto con l'utilizzo di un CD, e quindi si rende necessario un masterizzatore di CD, è possibile utilizzare l'Autorun anche con floppy disk ed unità di rete. Prima di vedere come abilitare il supporto per l'Autorun su un'unità specifica ci occuperemo di crearne uno nuovo dall'inizio.

I requisiti affinché un Autorun venga eseguito in maniera automatica sono due:

  1. Il file di impostazioni AUTORUN.INF
  2. Il programma da eseguire in maniera automatica

È anche opzionalmente possibile avere un'icona per il supporto in questione ed aggiungere una o più voci al menu contestuale, quello che appare cliccando con il tasto destro sull'icona del disco.

Nel 90% dei casi l'autorun si compone del file di impostazioni, del programma da eseguire e di un'icona. Il primo autorun che produrremo sarà costituito da queste tre caratteristiche.


Il programma da eseguire in maniera automatica dovrà essere totalmente autonomo e pertanto non dovrebbe richiedere installazione sull'hard disk per essere eseguito. Questo non vuol dire che il programma presente sul CD non debba essere installato prima di essere eseguito ma piuttosto non deve essere installato il programma che sarà mostrato in maniera automatica. Per semplificare il problema chiameremo questo programma launcher in quanto esso si occuperà soltanto di lanciare un determinato processo quale l'installazione del prodotto nel disco oppure una presentazione grafica per l'utente.

È fortemente sconsigliata la scrittura del launcher in Visual Basic in quanto esso prima di essere eseguito dovrebbe essere installato e richiede la presenza di numerosi file di libreria che sul computer in cui viene provato il progetto potrebbero non essere presenti. Si raccomanda pertanto l'utilizzo di un launcher scritto in linguaggio C e senza dipendenze esterne. In ogni caso il launcher deve obbligatoriamente essere un file eseguibile quindi con estensione EXE, COM o BAT. Non sono pertanto ammessi files con estensione HTML, TXT, PPT o altro... Vedremo tuttavia più avanti come evitare questa limitazione.

Il file di impostazioni AUTORUN.INF è un semplice file di testo posizionato sulla radice del disco che si vuol rendere autoeseguibile e contiene le righe di definizione del processo di Autorun. Nel nostro esempio si compone di 3 sole righe:

  1. [AUTORUN]
  2. ICON=icona.ico
  3. OPEN=avvia.exe "Presentazione del CD...."

Sulla prima riga nulla da dire; essa è soltanto l'intestazione dell'autorun e deve essere in tal modo.
La seconda riga definisce l'icona che rappresenterà l'unità: il percorso è relativo alla radice. Nel nostro esempio il file icona.ico si trova nella stessa cartella del file autorun.inf. Se l'icona si trovasse in una sottocartella della stessa unità basterebbe immettere il riferimento relativo ad esempio setup/prod.ico. È comunque possibile, ma fortemente sconsigliato, immettere il percorso assoluto dell'icona, anche se essa fosse contenuta in un'unità differente.

Il file di icona potrà essere un'immagine BMP, un'icona ICO di Windows oppure un file eseguibile EXE o DLL. Windows è in grado di estrarre le icone in maniera autonoma. Se la libreria (EXE o DLL) contiene più di un'icona sarà possibile specificare l'icona fornendo il suo indice all'interno della libreria separandolo dal nome con uno spazio.

La terza ed ultima riga indica il launcher da eseguire. Nel nostro esempio il launcher si chiama AVVIA.EXE e non fa altro che mostrare all'utente un messaggio. Tutto quello che segue saranno i parametri che verranno forniti all'applicazione launcher. Anche il percorso del launcher è relativo alla cartella in cui si trova il file AUTORUN.INF.

Nel momento in cui l'unità in cui si trova l'autorun viene attivata (inserendo il CD nel lettore oppure connettendo l'unità di rete) o l'utente clicca due volte sulla sua icona viene eseguito il programma launcher.

È altresì possibile aggiungere ulteriori voci nel menu contestuale dell'unità inserendo alcune voci nel file di impostazioni AUTORUN.INF. Estendiamo il file creato in precedenza aggiungendo due nuove voci al menu contestuale:

  1. [AUTORUN]
  2. ICON=icona.ico
  3. OPEN=avvia.exe "Presentazione del CD...."
  4. SHELL\LEGGIMI=Visualizza &Informazioni
  5. SHELL\LEGGIMI\COMMAND=wstart.exe leggimi.htm
  6. SHELL\EXPLORE=S&foglia il contenuto
  7. SHELL\EXPLORE\COMMAND=wstart.exe .\
  8. SHELL=OPEN

Le voci da aggiungere ai menu contestuali sono dette verbi (in inglese verb), non solo in ambito di autorun ma nell'intera architettura di Windows e nel registro.

Figura 1Abbiamo inizialmente aggiunto un nuovo verbo di nome LEGGIMI. Ad esso corrispondono due informazioni: la descrizione (riga 5) che sarà mostrata nel menu contestuale ed il comando (riga 6) che verrà eseguito al click sulla voce del menu contestuale.

Il primo verbo che è stato aggiunto, oltre la voce AutoPlay corrispondente all'applicazione launcher, è LEGGIMI ma all'utente sarà mostato il messaggio Visualizza Informazioni. Possiamo notare l'aggiunta di un segno & prima della lettera I. Esso farà si che tale lettera diventi una scorciatoia. L'utente infatti potrà cliccare via mouse sulla voce oppure premere la lettera I per richiamare il comando WSTART.EXE LEGGIMI.HTM.

WSTART è un semplice wrapper, un collegamento, alla funzione API ShellExecute trattata in un'altra sezione di questo sito. Esso in sostanza richiama la funzione Apri per il dato passato tramite riga di comando; corrisponde più o meno al doppio click sopra una qualunque icona. Tramite questo trucchetto è infatti possibile richiamare all'interno dell'Autorun un file non direttamente eseguibile quale la pagina LEGGIMI.HTM.

Nota: Avremmo potuto utilizzare come launcher lo stesso Explorer.exe che si occupa di gestire le estensioni di Windows nella maniera corretta.

Alle righe 8 e 9 abbiamo aggiunto un secondo verbo che consente di visionare il contenuto della cartella in cui si trova il file AUTORUN.INF, semplicemente richiamando il solito wrapper WSTART.EXE e passandogli come argomento la cartella stessa ( ./ ). Il secondo verbo prende il nome di EXPLORE ma mostrerà all'utente la descrizione Sfoglia il contenuto. La lettera F fungerà da scorciatoia.

Il verbo predefinito che sarà eseguito in maniera automatica all'attivazione dell'unità o al doppio click sull'icona è OPEN, corrispondente alla voce AutoPlay nel menu contestuale. È anche possibile modificare il verbo predefinito utilizzando l'istruzione SHELL (riga 11). Avremmo pertanto potuto scrivere SHELL=LEGGIMI per far sì che il verbo predefinito all'attivazione dell'unità sia Visualizza Informazioni, anziché AutoPlay.


La funzionalità di Autorun nei sistemi Windows 95/98/2000 è normalmente abilitata soltanto sulle unità CD e (mai documentato da Microsoft) sulle unità virtuali associate ovvero quelle unità logiche create tramite il comando SUBST. Su Windows ME invece le unità associate non funzioneranno come unità per l'Autorun.

Per testare il funzionamento di un Autorun non è strettamente necessario possedere un masterizzatore ed effettuare la scrittura sopra un CD. Sono infatti possibili due soluzioni: la prima riguarda la creazione di un'unità virtuale e la seconda consiste nell'abilitare l'autorun su un altra unità disco quale un disco floppy o l'hard disk stesso.

Come già detto, per poter creare un'unità virtuale associata è necessario utilizzare il comando SUBST, non presente in tutte le versioni di Windows. Se esso è presente nel sistema e se non utilizziamo Windows ME sarà possibile utilizzare questa soluzione.

Il suo utilizzo è alquanto semplice; è necessario fornire due soli argomenti: la lettera dell'unità virtuale da creare ed il percorso della cartella che corrisponderà alla radice dell'unità virtuale.
La soluzione da noi adottattata si compone di tre semplici passi:

  1. Aprire un Prompt di MS-DOS
  2. Spostarti nella cartella che corrisponderà alla radice dell'unità virtuale
  3. Digitare il comando SUBST L: .

Invece di L: potrebbe essere utilizzata un'altra lettera di unità ma si raccomanda la verifica che essa non esista già. Un caso pratico potrebbe essere quello mostrato nella figura 2.

Figura 2
Figura 2

Figura 3Se l'operazione è stata eseguita in maniera corretta ed il sistema lo prevede l'Autorun scatterà in maniera automatica. In altri casi potrebbe essere necessario cliccare due volte sull'unità appena creata da Risorse del Computer.

Selezionando la voce Visualizza Informazioni sarà aperta la pagina web di esempio tramite il programma predefinito. La voce Sfoglia il contenuto mostrerà il contenuto dell'unità in cui è contenuto l'Autorun.

Nell'esempio di quest'articolo è fornito anche un file BAT per creare e ricreare l'unità virtuale L: associata alla cartella in cui viene eseguito il file BAT. Esso servirà naturalmente soltanto per effettuare dei test prima dell'effettiva masterizzazione del CD finale.

Figura 4Se l'unità virtuale non dovesse funzionare è possibile provare ad alterare provvisoriamente un valore di sistema e permettere al computer l'utilizzo di altre unità quale il floppy disk, l'hard disk o le unità di rete. Si raccomanda di ripristinare il valore originale al termine della fase di test. Tale valore è contenuto nel registro di Windows alla chiave indicata dalla figura a fianco. Il valore è di tipo binario, prende il nome di NoDriveTypeAutoRun e si compone di 4 bytes di cui è fondamentale soltanto il primo.

In situazioni normali tale valore è 95 00 00 00. Il valore 95 esadecimale deve essere scomposto in 8 cifre binarie ottenendo così 1 0 0 1 0 1 0 1. Analizziamo più a fondo il significato dei vari bit assegnando ad ognuno delle costanti:

Posizione Costante Significato
0 DRIVE_UNKNOWN Unità Sconosciute
1 DRIVE_NO_ROOT_DIR La radice non esiste
2 DRIVE_REMOVABLE Dischi rimovibili (floppy e ZIP)
3 DRIVE_FIXED Dischi fissi (hard disk)
4 DRIVE_REMOTE Unità remote di rete
5 DRIVE_CDROM CD-ROM e masterizzatori
6 DRIVE_RAMDISK RAM Disk
7 Reserved Riservato per usi futuri

Il bit in posizione 7 ovvero l'ultimo è riservato per usi futuri e deve comunque essere impostato su 1. Il valore di default 95 corrisponde alla disabilitazione dell'Autorun nelle unità di tipo sconosciuto, le unità rimovibili e quelle di rete.

Per permettere l'utilizzo dell'Autorun sulle unità floppy sarà necessario azzerare il bit nella posizione 2 utilizzando un'operazione di AND come segue: VALORE AND (NOT 2^2) ovvero impostando il primo byte del valore del registro su 91.

È stato riscontrato che in alcuni sistemi alla modifica di tali valori del registro non corrisponde all'attivazione/disattivazione delle unità specificate. In tal caso si raccomanda il riavvio di Windows dopo la modifica.

Fibia FBI
14 Marzo 2002

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Torna all'indice degli articoli