Perché le mie applicazioni ad esecuzione automatica si comportano in modo strano su Vista?

StackOverflow https://stackoverflow.com/questions/15805

  •  08-06-2019
  •  | 
  •  

Domanda

Il prodotto su cui stiamo lavorando consente all'utente di configurarlo facilmente per l'esecuzione automatica ogni volta che si avvia il computer.Ciò è utile perché il prodotto fa parte dell'ambiente di lavoro di base della maggior parte dei nostri utenti.
Questa funzionalità è stata implementata non molto tempo fa e per un po' tutto è andato bene, ma quando abbiamo iniziato a testarla su Vista il prodotto ha iniziato a comportarsi in modo davvero strano all'avvio.Nello specifico, il nostro prodotto fa uso di un altro prodotto (chiamiamolo X) che lancia ogni volta che ha bisogno dei suoi servizi.Il vero problema è che ogni volta che X viene avviato immediatamente dopo l'accesso, si arresta in modo anomalo o segnala errori critici relativi all'accesso al disco (questo accade anche quando X viene avviato direttamente, non tramite il nostro prodotto).

Ciò accade ogni volta che eseguiamo il nostro prodotto registrandolo nella chiave "Esegui" nel registro o inserendo un collegamento ad esso nella chiave "Avviare" cartella all'interno di "Menu iniziale", anche quando mettiamo un ritardo di ~20 secondi prima di iniziare effettivamente l'esecuzione.Quando abbiamo cambiato il ritardo a 70 secondi, tutto va bene.

Abbiamo provato a riprodurre il problema avviando manualmente il nostro prodotto subito dopo l'accesso (facendo doppio clic su un collegamento posizionato sul desktop) ma senza alcun risultato.

Ora, com'è possibile che le applicazioni che vengono eseguite normalmente un minuto dopo l'accesso riportino errori così gravi quando vengono avviate immediatamente dopo l'accesso?

È stato utile?

Soluzione

Questo è l'effetto di una nuova funzionalità di Vista chiamata "Boxing":Windows dispone di diversi meccanismi che consentono all'utente/amministratore di impostare le applicazioni in modo che vengano eseguite automaticamente all'avvio di Windows.Questa funzionalità viene utilizzata principalmente per uno di questi scopi:1.Programmi che fanno parte dell'ambiente di lavoro di base dell'utente, in modo tale che la prima azione che l'utente normalmente intraprende all'avvio del computer è avviarli.2.Tutti i tipi di "agenti" in background: Skype, Messenger, Winamp ecc.

Quando troppi programmi (o troppo pesanti) vengono registrati per essere eseguiti all'avvio, il risultato finale è che l'utente non può fare nulla per i primi secondi/minuti dopo l'accesso, il che può essere davvero fastidioso.Arriva la funzionalità "Boxing" di Vista:

In breve, Vista forza tutti i programmi richiamati tramite il tasto Esegui a funzionare con priorità bassa per i primi 60 secondi dopo l'accesso.Ciò riguarda entrambi Priorità I/O (impostata su Molto bassa) e priorità CPU.Le richieste I/O con priorità molto bassa non passano attraverso la cache dei file, ma vanno direttamente sul disco.Pertanto, sono molto più lenti dell'I/O normale.La durata del periodo di inscatolamento è impostata dal valore di registro:"HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DelayedApps\Delay_Sec".

Per una spiegazione più dettagliata cfr Qui E Qui

Altri suggerimenti

Il programma probabilmente necessita di qualche informazione in più da inserire nelle sue proprietà.È necessario eseguire "Esegui come" invece di limitarsi a eseguirlo.

Forse questa applicazione dovrebbe essere sviluppata come servizio, invece che come programma da avviare, oppure potresti avere un servizio che avvia il programma quando viene determinata la migliore finestra di opportunità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top