Come sapere quando Windows e tutti i programmi di avvio hanno completato l'avvio?


37

Il mio computer (Windows 7 a 64 bit) impiega circa 3-4 minuti per avviarsi completamente. Esiste un modo per indicare che l'avvio è completo, una sorta di suono / pop-up, utilizzando la funzionalità integrata di Windows o un'applicazione di terze parti?

Richiedo che sia Windows sia tutti i programmi di avvio abbiano terminato l'avvio

Di solito qualche volta mi siedo e aspetto davanti alla macchina, quel tempo potrebbe essere meglio utilizzato per una sveltina.

Ecco come appare, quando la spia del disco rigido smette di lampeggiare:

inserisci qui la descrizione dell'immagine


2
Dopo il processo di accesso ... Tutti i processi in background, ecc. L'intero shebang
Firee

3
Potresti voler aggiungere cosa intendi per "avvio completato": tutti i programmi caricati o solo il sistema operativo Windows caricato.
Zurfyx,

3
Sono abbastanza certo che non esiste una risposta definitiva. Alcuni processi in background attendono che il PC diventi inattivo prima di avviarsi, altri semplicemente aspettano un periodo fisso. È difficile prevedere che FooUpdater.EXEdormirà per 7 minuti.
MSalters

2
Forse invece, rilevare quando i processi occupati alla fine diventerebbero inattivi per te? In tal caso, il trigger dell'attività "Inattivo" di Task Manager di Windows non è sufficiente?
Ƭᴇcʜιᴇ007

2
3-4 minuti sono davvero abbastanza tempo per un "sveltina"? oO
Jason C,

Risposte:


25

Ci sono diverse risposte potenzialmente utili qui, ma penso che ci siano due punti importanti che non sono stati fatti:

  1. No, non è possibile determinare a livello di codice che Windows e tutti i programmi di avvio abbiano terminato l'avvio. Questo è essenzialmente il problema dell'arresto e nessun programma là fuori sarà in grado di rispondere alla domanda "Per questo programma arbitrario, a che punto dovremmo dire che è stato caricato?".

  2. Qual è il problema reale che stai cercando di risolvere? Tutte le risposte qui tentano di trovare una soluzione alla tua domanda, ma la domanda stessa sembra che potrebbe mancare qualche informazione importante. Vogliamo risolvere il tuo problema, non solo rispondere alla domanda .

Leggendo di nuovo la tua domanda e seguendo solo quello che hai detto, la mia risposta sarebbe una delle seguenti:

  • Non preoccuparti e inizia a usare il tuo computer. Le attività in primo piano sono prioritarie e, a meno che tu non abbia qualcosa di veramente insolito in corso, non dovrebbe importare se le attività in background sono in esecuzione.

O:

  • Guarda manualmente il sistema alcune volte e calcola il tempo massimo necessario prima che il sistema sia "pronto" in base alle metriche che hai. Ottieni un programma timer o uno script di piccole dimensioni e aggiungilo all'avvio del tuo sistema. Può visualizzare un messaggio o riprodurre un suono allo scadere del tempo scelto.

Questo potrebbe non rispondere direttamente alla tua domanda attuale, ma speriamo che sia utile.


3
Questa è la risposta migliore (e tecnicamente più corretta) per un motivo IMO: evidenzia l'ambiguità nel definire "tutti i programmi di avvio hanno terminato l'avvio". Concordo sul fatto che il problema dell'arresto sia abbastanza rilevante, ma solo nel caso in cui i processi avviati finiscano. Sebbene sia possibile monitorare il consumo di CPU di vari programmi dopo l'avvio e utilizzare una soglia predefinita per dettare quando il computer ha "terminato l'avvio", questo copre solo un piccolo sottoinsieme di casi (in particolare, i processi le cui prestazioni di caricamento sono principalmente legate alla CPU) .
Breakthrough

@Breakthrough Ottimo punto e modifica, grazie. Stavo davvero cercando di esprimere sinteticamente l'idea che per ogni dato programma eseguito all'avvio, potrebbe fare un numero qualsiasi di cose imprevedibili: (1) avviare e quindi terminare, (2) avviare e continuare a funzionare, (3) avviare e generare ulteriori elabora, quindi esegui (1) o (2). Anche basare l'idea di "completo" sul consumo di risorse non è l'ideale a causa del caricamento ritardato e del fatto che alcuni programmi potrebbero anche essere in attesa che il sistema sia "inattivo" per iniziare a fare qualche lavoro aggiuntivo.
Nick,

ci si chiede quanto sarebbe utile una bandiera "inattiva" o "avviata" per i processi persistenti / daemon (attenzione, è utile solo se implementata in ogni processo che stai aspettando ...).
Breakthrough

@Breakthrough Se non sbaglio, Linux ' systemdha questo, dove, in linea di principio, si potrebbe iniziare un servizio dopo che tutti gli altri hanno iniziato attraverso il suo meccanismo di dipendenza. Dovresti specificarli tutti manualmente (la mia systemdconoscenza non è poi così eccezionale).
rubenvb,

@Nick Grazie per il ragionamento alla base del tentativo di trovare la soluzione, in realtà fornisce una nuova prospettiva. Ho pensato che ci sarebbe stata una soluzione molto semplice, ma non sembra così ... Per ora userei un piccolo programma timer, che mi fa sapere che il tempo specificato è scaduto.
Firee,

11

Perché non utilizzare l'Utilità di pianificazione di Windows e l'ID evento 100 per riprodurre un suono personalizzato al termine di Windows?

In Trigger selezionare "Su un evento" e

  • Log: LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • Fonte: prestazioni diagnostiche
  • ID evento: 100

In Azioni selezionare "Avvia un programma" con


1
Richiedo che sia Windows sia tutti i programmi di avvio abbiano terminato l'avvio
Firee

2
FWIW: Al momento in cui è stata data questa risposta, l'OP ha menzionato solo "Avvio di Windows". La seconda parte, inclusi tutti i programmi di avvio, è stata aggiunta in seguito!
nixda,

Commento di un utente anonimo: questo metodo funziona molto bene se il tempo di avvio è un po 'lento o molto lento. È semplice e preciso. Tuttavia, se il tempo di avvio è rapido, in meno di 3 minuti circa (o entro i limiti definiti da Windows Design) non viene registrato alcun evento 100, quindi non verrà riprodotto alcun suono
nixda

9

Windows tratterà l'avvio completato se era inattivo all'80% (esclusi CPU e attività del disco a bassa priorità) per 10 secondi dopo aver raggiunto l'interfaccia utente del desktop.

Per vedere l'ora esatta di avvio, usa xbootmgr per tracciare perché Windows si avvia lentamente .


1
La mia domanda non è di accelerare l'avvio, voglio solo un'indicazione quando l'avvio completo (con tutti i programmi di avvio ecc.) È completo
Firee

5
dovresti correggere l'avvio lento invece di provare a riprodurre un suono.
magicandre1981,

8

Ho un programma gratuito installato che utilizzo da molto tempo, Soluto: https://www.soluto.com/

Sono solo un utente, non connesso.

Per me funziona.

Fa un conto alla rovescia e consente di selezionare solo ciò che si desidera caricare all'avvio.

Ti consente anche di ritardare gli avviamenti.


Funziona offline?
Firee,

Questo sito / azienda ora fornisce un'app mobile per le funzionalità di sicurezza remota; Presumo che il dominio sia di proprietà di qualcun altro ora.
mbuc91,

6

Esegui questo script Python all'avvio. Riprodurrà il suono di avvio una volta che l'utilizzo della CPU è stato inferiore al 20 percento per 5 secondi consecutivi:

import subprocess
import time

# set these to whatever works for you
# sound will play when cpu load has been < IDLE_PERCENT for IDLE_TIME consecutive seconds
IDLE_TIME = 5
IDLE_PERCENT = 20

# you can execute any program you want by changing the alert function below


def get_load():
    output = subprocess.check_output('wmic cpu get loadpercentage', shell=True)
    load = output.split()[1]
    return int(load)

def alert():
    subprocess.call([
        r"c:\Program Files (x86)\Windows Media Player\wmplayer.exe",
        r"c:\Windows\Media\Windows Logon Sound.wav"])


idleSeconds = 0

while idleSeconds < IDLE_TIME:
    load = get_load()
    if load < IDLE_PERCENT:
        idleSeconds += 1
    else:
        idleSeconds = 0

    time.sleep(1)

alert()

2

È possibile aggiungere un suono all'avvio.

È possibile ritardare i processi di avvio e inserire prima un effetto sonoro. Lo strumento Startup Delayer esegue questa operazione.

inserisci qui la descrizione dell'immagine


Questo rilevamento di avvio è completo o devo inserire un timer ideale?
Firee,

@Firee Non c'è bisogno di un timer, basta usare l'opzione "ritardo automatico"
stderr

1

Questo potrebbe non essere molto efficace, ma è economico.

Di solito guardo il led di attività del disco rigido (puoi identificarlo sul case con qualcosa come un'icona di database), fino a quando il led non si stabilizza e lampeggia di rado, quindi so che ora posso usare il PC senza molto ritardo. Il disco rigido di solito è il collo di bottiglia del PC e, se non viene utilizzato pesantemente, allora hai spazio per il lavoro.

Spero che sia d'aiuto.


1
Questo è noto, ma devo sedermi e aspettare ...
Firee,

4
Non devi Puoi delegare chiunque in casa a farlo per te. Immagina. è facile!. : D
MadeOfAir

0

Non l'ho mai usato da solo, ma l'Utilità di pianificazione di Windows ti consentirà di creare un'attività che viene attivata per eseguire "All'avvio" o "All'accesso". Potrebbe essere possibile pianificare un'attività per eseguire uno script PowerShell per accedere al metodo Console.Beep () di .NET Framework. Potresti anche essere in grado di trasformarlo in una melodia decente.

Da Hey Scripting Guy! blog

[console]::beep(500,300)

Modifica il valore del primo numero per modificare l'altezza (non è possibile ascoltare alcunché inferiore a 190 o superiore a 8500) e modifica il valore del secondo numero per modificare la durata

Modifica: A quanto pare il metodo Console.Beep () potrebbe non funzionare su sistemi a 64 bit secondo la documentazione MSDN .NET. Segnale acustico testato in uno script di PowerShell e funziona correttamente.

Potresti anche voler controllare i tuoi processi di avvio. Puoi farlo eseguendo msconfig e facendo clic sui servizi. Puoi anche usare lo strumento Autoris di Sysinternals.


0

Per ultimo, la documentazione di Windows nell'ordine di caricamento è il registro currentuser / runOnce (dopo la cartella di avvio) ... ma qualunque sia l'ordine di caricamento, alcuni programmi possono richiedere molto tempo di avvio.

Quindi forse guardare l'attività della CPU in un file batch può essere una buona soluzione:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set cpuLimit=15
set /a lowCount=0

for /l %%i in (1,1,30) do (
   for /F %%c in ('wmic cpu get loadpercentage ^| findstr "[0-9]"') do (
       echo %%i cpu-Load: %%c  ...lowCnt: !lowCount!
      if %%c gtr %cpuLimit% ( set lowCount=0
      ) else ( set /a lowCount+=1
         if !lowCount! gtr 10 (
            ECHO BEEEEEEP ... mplay32 beep.wav... or something
            exit
         )
      )
   )
   ping -n1 127.0.0.1 >NUL
)

... e BEEEP dopo aver constatato che negli ultimi 10 controlli del carico della cpu, il carico della cpu era inferiore al 15%. questo file batch può essere avviato tramite collegamento nella cartella di avvio o meglio nel registro HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run


0

Hai scritto:

«Il mio computer (Windows 7 a 64 bit) impiega circa 3-4 minuti per avviarsi completamente ...»

Un avvio "normale" richiede circa 30 secondi incluso l'accesso all'account utente. C'è qualcosa che non va e questo deve essere risolto. Per risolverlo, devi ottenere i dati. Ti suggerisco due utilità per risolvere questo problema:

1) Autoruns

Con questo sei in grado di controllare ogni processo, programma, driver caricato durante il processo di avvio. Attenzione: questo è uno strumento molto potente e NON cancellare oggetti se non sai cosa stai facendo. Ma è possibile deselezionare (disabilitare) alcuni programmi di accesso all'avvio ...

2) System Explorer

Con questo strumento puoi vedere tutti i processi avviati e la loro cronologia fino all'avvio di System Explorer. Inoltre è possibile scansionare tutti questi processi per motivi di sicurezza (rispetto a un database dei processi ..)

Controlla prima che ci diano un feedback.

Puoi anche controllare i servizi all'avvio con services.msce lo stato dei dispositivi con devmgmt.msc(triangolo giallo per dispositivi difettosi, disco rigido in modalità PIO anziché DMA e così via ...) negli strumenti di amministrazione di Windows ...

Spero che questo aiuto. Facci sapere.


La mia preoccupazione non è perché il tempo di avvio sia così lungo. Potrei avere molti programmi di avvio ecc ... Ho solo bisogno di un'indicazione quando l'intero processo di avvio è completo, che include Windows, Accesso, tutti i programmi di avvio ecc.
Firee

Basta controllare con il task manager ... Quando la CPU è inattiva è fatto. Richiede 3,4 minuti per il tuo PC, giusto? : - /
climenole

Ecco come appare, dopo che le spie dei dischi rigidi smettono di
Firee

"Qualcosa non va e questo deve essere risolto". O è solo l'antivirus che fa il suo lavoro in maniera molto approfondita ...
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Forse. Come ho detto, la mia preoccupazione non è il tempo necessario, devo solo sapere quando è completato e posso iniziare a utilizzare il sistema senza il possibile ritardo a causa del processo in background ancora in corso di avvio.
Firee,

0

Stavo cercando qualcosa del genere e ho trovato la risposta

posterò il codice vero e proprio in seguito probabilmente, ma qui va

http://msdn.microsoft.com/en-us/library/aa394226%28v=vs.85%29.aspx

basta salvare il contenuto dell'ultima parte come file vbs ed eseguirlo, è possibile eseguire il polling di ogni evento di sistema ed estrarne il messaggio visualizzato, semplice.

ciò che si deve fare per trovare il completamento della sequenza di avvio è far eseguire questo script solo fino a quando l'ID evento è '100' che corrisponde al processo di completamento dell'avvio negli eventi di sistema

consultare: http://www.howtogeek.com/72420/how-to-use-event-viewer-to-find-your-pcs-boot-time/

Quindi, quando hai questo script all'avvio, eseguirà il polling di tutti gli eventi e attenderà che l'ID evento sia 100 e ti avviserà. lo stesso può essere impiegato in qualsiasi strumento di scripting come autoit

Volevo solo che tutti lo sapessero. perché quando ho cercato questo. tutto quello che ho trovato è stata l'idea dell'utilità di pianificazione di Windows o il soluto al meglio. in realtà soluto ha smesso di funzionare sul mio pc x64 qualche tempo fa per qualche strana ragione. quindi volevo fare da solo una sceneggiatura che mi ha portato a questa soluzione finale ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.