Windows - Informazioni riservateAspettando RunOnce

Sul sito Web di Raymond Chen

SI CONSIDERI UN processo di installazione che richiede il riavvio del sistema mentre è in esecuzione. È possibile ad esempio che sia necessario aggiornare una DLL di sistema già in uso. In tal caso è necessario eseguire un riavvio intermedio per recuperare il nuovo file DLL installato e, una volta completato l'aggiornamento della DLL, sarà possibile utilizzarla nella fase successiva dell'installazione.

La chiave RunOnce è stata progettata specificamente per uno scenario di questo tipo, ovvero per essere utilizzata dai programmi di installazione per completare l'installazione dopo un riavvio intermedio (questo avveniva in un'epoca in cui si riteneva che i programmi non potessero creare problemi al sistema).

Esplora risorse di Windows® attende il completamento dell'esecuzione del programma RunOnce prima di creare il desktop e la barra delle applicazioni. Questo avviene in quanto RunOnce opera in base al principio secondo il quale la chiave è stata progettata esclusivamente per i programmi di installazione. È possibile che il programma RunOnce stia modificando i dati di configurazione del sistema e che non si desideri che l'utente utilizzi un sistema mentre è in corso la riconfigurazione.

Si supponga, ad esempio, che il programma RunOnce stia eseguendo la riassegnazione e l'associazione dei file appena installati e che alcuni di questi file facciano parte di un 'estensione della shell. In tal caso si desidera certamente evitare che l'utente tenti di eseguire il programma o attivare l'estensione mente è ancora in corso l'aggiornamento dell'eseguibile.

Un'altra insidia legata al principio "progettato esclusivamente per i programmi di installazione" è rappresentata dal fatto che la chiave RunOnce viene elaborata solo se l'accesso viene eseguito da un utente con privilegi di amministratore. Gli utenti che non dispongono di privilegi di amministratore non saranno in grado di completare l'installazione. Se inoltre la chiave RunOnce venisse eseguita per utenti non amministratori, non verrebbe più "eseguita una sola volta". Uno scenario di questo tipo comporterebbe un problema piuttosto serio, poiché l'utente non sarebbe in grado di impedire che la chiave, una volta eseguita, venga eseguita di nuovo. La modifica di questo stato a livello di sistema richiederebbe la disponibilità di privilegi di amministratore, privilegi che ovviamente un utente non amministratore non possiede. Il programma non verrebbe più "eseguito una sola volta", ma verrebbe "rieseguito continuamente fino a quando un amministratore non esegue l'accesso al computer".

  (Fare clic sull'immagine per ingrandirla)

La chiave RunOnce, progettata per consentire il completamento dell'installazione dei programmi, è visibile durante l'installazione di Windows. Quando si tenta di installare un service pack o un aggiornamento a una versione più recente di Windows, l'Installazione guidata esegue il controllo della chiave RunOnce. Se non è vuota, verrà visualizzato un messaggio di errore in cui si informa che è ancora in corso l'installazione di alcuni programmi e si chiede di completare l'installazione prima di eseguire l'aggiornamento del sistema operativo. Questo messaggio consente di evitare di modificare il sistema operativo proprio nel mezzo del processo di installazione di un programma.

La progettazione globale della chiave RunOnce ne rivela lo scopo principale. È stata realizzata in Windows 95, un sistema operativo che non prevedeva alcuna distinzione tra amministratori e utenti non amministratori. Poiché, in sostanza, ogni utente disponeva dei privilegi di amministratore in Windows 95, un programma di installazione che utilizzava RunOnce poteva basarsi sul fatto che le azioni di RunOnce sarebbero state certamente eseguite al successivo riavvio del sistema.

Nei sistemi operativi Windows più recenti, in particolare in Windows Vista™, è possibile che per alcuni mesi consecutivi nessun utente con privilegi di amministratore esegua l'accesso. Di conseguenza, un programma che richiede l'esecuzione di RunOnce si troverà nella necessità di stare in attesa per lunghi periodi di tempo.

Si sono verificate situazioni in cui si è potuto assistere a un RunOnce perpetuo, che si riaggiungeva alla chiave RunOnce a ogni esecuzione. Questo comportamento non è chiaramente conforme allo scopo della progettazione della chiave RunOnce, poiché implica che la chiave non fa più parte dell'installazione del programma ma del normale funzionamento del programma e causa inoltre la continua visualizzazione durante l'esecuzione del programma di installazione di Windows di messaggi che informano che è in corso un'installazione.

Non è mai possibile eseguire l'aggiornamento del sistema operativo, dal momento che questo fastidioso programma visualizza continuamente un messaggio che invita l'utente ad attendere il completamento di un'installazione. Un'attesa che somiglia molto a quella del celebre Godot, sebbene non in grado di provocare, si spera, la stessa crisi esistenziale.

Sul sito Web di Raymond Chen, The Old New Thing (in inglese), è possibile leggere la cronologia di Windows e della programmazione Win32. Raymond Chen sta lavorando a un libro dal titolo The Old New Thing (Addison-Wesley, 2007).

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.