Como saber quando o Windows e todos os programas de inicialização concluíram a inicialização?


37

Minha máquina (Windows 7 de 64 bits) leva cerca de 3-4 minutos para inicializar completamente. Existe alguma maneira de indicar que a inicialização está concluída, algum tipo de som / pop-up, usando o recurso incorporado do Windows ou qualquer aplicativo de terceiros?

Eu preciso quando o Windows e todos os programas de inicialização terminarem a inicialização

Geralmente, em algum momento, sento e espero em frente à máquina; esse tempo pode ser melhor utilizado para uma rapidinha.

É assim que fica quando a luz do disco rígido pára de piscar:

insira a descrição da imagem aqui


2
Após o processo de logon ... Todos os processos de fundo etc .. O todo shebang
Firee

3
Você pode querer adicionar o que você quer dizer com "inicialização concluída": todos os programas carregados ou apenas o Windows OS carregado.
Zurfyx

3
Estou bastante certo de que não há resposta definitiva. Alguns processos em segundo plano aguardam o PC ficar ocioso antes de serem iniciados, outros apenas aguardam um período fixo. É difícil prever que FooUpdater.EXEele durma por 7 minutos.
MSalters

2
Talvez, em vez disso, detectar quando processos ocupados se tornem um trabalho ocioso para você? Em caso afirmativo, o gatilho da tarefa "On Idle" do Windows Task Manager não é suficiente?
Ƭᴇcʜιᴇ007

2
3-4 minutos são realmente tempo suficiente para uma "rapidinha"? oO
Jason C

Respostas:


25

Existem várias respostas potencialmente úteis aqui, mas acho que há dois pontos importantes que não foram feitos:

  1. Não, não é possível determinar programaticamente que o Windows e todos os programas de inicialização concluíram a inicialização. Este é essencialmente o Problema de Parada e nenhum programa disponível poderá responder à pergunta "Para este programa arbitrário, em que momento devemos dizer que ele foi carregado?".

  2. Qual é o problema real que você está tentando resolver? Todas as respostas aqui tentam encontrar uma solução para sua pergunta, mas parece que a pergunta em si pode estar perdendo algumas informações importantes. Queremos resolver o seu problema, não apenas responder à pergunta .

Lendo sua pergunta novamente e seguindo exatamente o que você disse, minha resposta seria uma das seguintes:

  • Só não se preocupe e comece a usar o seu computador. As tarefas em primeiro plano são priorizadas e, a menos que você tenha algo realmente incomum, não importa se as tarefas em segundo plano estão em execução.

Ou:

  • Assista manualmente ao sistema algumas vezes e calcule a quantidade máxima de tempo que leva para que o sistema esteja "pronto", de acordo com as métricas que você tiver. Obtenha um pequeno programa ou script de timer e adicione-o à inicialização do sistema. Ele pode exibir uma mensagem ou reproduzir um som quando o tempo escolhido tiver decorrido.

Isso pode não responder diretamente à sua pergunta atual, mas espero que seja útil.


3
Esta é a melhor (e tecnicamente correta) resposta por uma razão da IMO: destaca a ambiguidade em definir "todos os programas de inicialização concluíram a inicialização". Concordo que o problema da parada é bastante relevante, mas apenas no caso de os processos iniciados chegarem ao fim. Embora se possa monitorar o consumo de CPU de vários programas após a inicialização e usar um limite predefinido para determinar quando o computador "inicializou", isso abrange apenas um pequeno subconjunto de casos (principalmente processos cujo desempenho de carregamento é principalmente vinculado à CPU) .
Revelação

@ Breakthrough Bom ponto e editar, obrigado. Eu estava realmente tentando expressar sucintamente a idéia de que, para qualquer programa executado na inicialização, ele pode fazer várias coisas imprevisíveis: (1) iniciar e terminar, (2) iniciar e continuar executando, (3) iniciar e gerar adicionais processos, faça (1) ou (2). Mesmo basear a idéia de "completo" no consumo de recursos não é o ideal, devido ao atraso no carregamento e ao fato de que alguns programas podem até estar aguardando até que o sistema esteja "inativo" para começar a fazer algum trabalho adicional.
21414 Nick

faz com que se pergunte o quão útil um sinalizador "inativo" ou "inicializado" seria para processos persistentes / daemon (ressalva, isso só é útil se implementado em todos os processos que você está aguardando ...).
Revelação

@ Breakthrough Se não me engano, o linux ' systemdtem isso, onde, em princípio, alguém pode iniciar um serviço depois que todos os outros iniciarem através de seu mecanismo de dependência. Você teria que especificar todos eles manualmente (meu systemdconhecimento não é tão bom).
rubenvb

@ Nick Obrigado pelo raciocínio por trás da tentativa de encontrar a solução, na verdade, fornece uma nova perspectiva. Presumi que haveria uma solução muito simples, mas não parece ser ... Por enquanto, eu usaria um pequeno programa de timer, que me informa que o tempo especificado acabou.
Firee

11

Por que não usar o Agendador de tarefas do Windows e o ID do evento 100 para reproduzir um som personalizado quando o Windows realmente está concluído?

Em Disparadores, selecione "Em um evento" e

  • Log: LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • Fonte: diagnóstico-desempenho
  • ID do Evento: 100

Em Ações, selecione "Iniciar um programa" com


11
Eu exijo quando ambas as janelas e todos os programas de inicialização tem booting acabado
Firee

2
FWIW: No momento em que essa resposta foi dada, o OP mencionou apenas "Inicialização do Windows". A segunda parte, incluindo todos os programas de inicialização, foi adicionada mais tarde!
Nixda 17/03

Comentário de um usuário anônimo: esse método funciona muito bem se o tempo de inicialização for um pouco lento ou muito lento. É simples e preciso. No entanto, se o seu tempo de inicialização é rápida, sob cerca de 3 min, (ou dentro dos limites definidos pelo projeto Windows) nenhum evento 100 é registrado, de forma que nenhum som será reproduzido
nixda

9

O Windows tratará a inicialização concluída se estiver ociosa em 80% (excluindo a CPU e a atividade de disco de baixa prioridade) por 10s após atingir a interface do usuário da área de trabalho.

Para ver o tempo exato de inicialização, use xbootmgr para rastrear por que o Windows inicializa lentamente .


11
A minha pergunta não é para acelerar a inicialização, eu só quero uma indicação quando a inteira (com todos os programas de inicialização, etc.) inicialização está completa
Firee

5
você deve corrigir a inicialização lenta em vez de tentar reproduzir um som.
magicandre1981

8

Tenho um programa gratuito instalado que utilizo há muito tempo, Soluto: https://www.soluto.com/

Eu sou apenas um usuário, não conectado.

Funciona para mim.

Ele faz uma contagem regressiva e permite que você selecione exatamente o que deseja carregar na inicialização.

Também permite atrasar o início.


Funciona offline?
Firee

Este site / empresa agora fornece um aplicativo móvel para recursos de segurança remota; Presumo que o domínio seja de propriedade de outra pessoa agora.
Mbuc91

6

Execute este script Python na inicialização. Ele reproduzirá o som de inicialização assim que o uso da CPU estiver abaixo de 20% por 5 segundos consecutivos:

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

Você pode adicionar um som à inicialização.

Você pode atrasar os processos de inicialização e colocar um efeito sonoro a ser executado primeiro. A ferramenta Startup Delayer faz isso.

insira a descrição da imagem aqui


Isso detectará a inicialização completa ou eu tenho que colocar um cronômetro ideal?
Firee

@Firee Não há necessidade de um temporizador, basta usar o "atraso automático" opção
stderr

1

Isso pode não ser muito eficaz, mas é barato.

Normalmente, olho para o led de atividade do disco rígido (você pode identificá-lo no gabinete por algo como um ícone de banco de dados), até que o led se estabilize e pisque com pouca frequência, então sei que agora posso usar o PC sem muito atraso. O disco rígido geralmente é o gargalo do PC e, se não estiver sendo muito utilizado, você terá espaço para trabalhar.

Espero que ajude.


11
Isso é sabido, mas eu tenho que sentar e esperar ...
Firee 17/03

4
Você não precisa. Você pode delegar alguém na casa para fazer isso por você. é fácil!. : D
MadeOfAir

0

Eu nunca o usei, mas o Agendador de tarefas do Windows permitirá que você crie uma tarefa que é acionada para executar "Na inicialização" ou "No logon". Você pode agendar uma tarefa para executar um script do PowerShell para acessar o método Console.Beep () do .NET Framework. Você pode até transformá-lo em uma música decente.

De Hey Equipe de Script! Blog

[console]::beep(500,300)

Altere o valor do primeiro número para alterar o tom (não é possível ouvir nada menor que 190 ou superior a 8500) e altere o valor do segundo número para alterar a duração

Editar: como se vê, o método Console.Beep () pode não funcionar em sistemas de 64 bits, de acordo com a documentação do MSDN .NET. Bip testado em um script do PowerShell e funciona bem.

Você também pode verificar seus processos de inicialização. Você pode fazer isso executando o msconfig e clicando em serviços. Você também pode usar a ferramenta Sysinternals Autoruns.


0

Segundo a documentação do Windows, a última ordem de carregamento é o registro currentuser / runOnce (após a pasta de inicialização) ... mas, seja qual for a ordem de carregamento, alguns programas podem levar um longo tempo de inicialização.

Então, talvez assistir a atividade da CPU no arquivo em lotes seja uma boa solução:

@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 BEEEPing após dizer que nas últimas 10 verificações de carga de CPU, houve carga de CPU abaixo de 15%. esse arquivo em lote pode ser iniciado por link na pasta de inicialização ou, melhor, no registro HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run


0

Você escreveu:

«Minha máquina (Windows 7 de 64 bits) leva cerca de 3-4 minutos para inicializar completamente ...»

Uma inicialização "normal" leva cerca de 30 segundos, incluindo o acesso à conta do usuário. Há algo errado e isso deve ser corrigido. Para corrigi-lo, você precisa obter os dados. Eu sugiro que você dois utilitários para solucionar esse problema:

1) Autoruns

Com este, você é capaz de verificar todos os processos, programas e drivers carregados durante o processo de inicialização. Tka care: esta é uma ferramenta muito poderosa e NÃO exclua itens, a menos que você saiba o que está fazendo. Mas você pode desmarcar (desativar) alguns programas de logon de inicialização ...

2) System Explorer

Com essa ferramenta, você pode ver todo o processo iniciado e o histórico deles até que o System Explorer seja iniciado. Também é possível verificar todos esses processos por motivos de segurança (em comparação com um banco de dados de processos ..)

Verifique isto primeiro, eles nos dão algum feedback.

Você também pode verificar os serviços na inicialização services.msce o status dos dispositivos com devmgmt.msc(triângulo amarelo para dispositivos defeituosos, disco rígido no modo PIO em vez de DMA, etc.) nas ferramentas administrativas do Windows ...

Espero que esta ajuda. Nos informe.


Minha preocupação não é por que o tempo de inicialização é tão longo. Posso ter muitos programas de inicialização, etc ... Só preciso de uma indicação quando todo o processo de inicialização estiver concluído, incluindo Windows, Logon, todos os programas de inicialização etc.
Firee

Basta verificar com o gerenciador de tarefas ... Quando a CPU está no estado ocioso, está pronta. Leva 3,4 minutos para o seu PC, certo? : - /
climenole 17/03

É assim que parece, depois que as luzes dos discos rígidos param de piscar i.stack.imgur.com/nVToB.png
Firee

"Algo está errado e isso deve ser corrigido". Ou é apenas o anti-vírus que faz seu trabalho muito bem ...
Thorbjørn Ravn Andersen 17/03

@ ThorbjørnRavnAndersen Talvez. Como eu disse, minha preocupação não é quanto tempo leva, eu só preciso saber quando ela está concluída e posso começar a usar o sistema sem o possível atraso devido ao processo em segundo plano ainda em processo de inicialização.
Firee

0

Eu estava procurando por algo assim e encontrei a resposta

provavelmente postarei o código real mais tarde, mas aqui vai

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

basta salvar o conteúdo da última parte como um arquivo vbs e executá-lo, você pode pesquisar cada evento do sistema e extrair sua mensagem sendo exibida, simples.

o que é preciso fazer para encontrar a conclusão da sequência de inicialização é executar esse script apenas até que o ID do evento seja '100' que corresponda ao processo de conclusão da inicialização nos eventos do sistema

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

Portanto, quando você tiver esse script na inicialização, ele pesquisará todos os eventos e esperará que o ID do evento seja 100 e o alertará. o mesmo pode ser empregado em qualquer ferramenta de script como autoit

Só queria que todos soubessem disso. porque quando eu procurei por isso. tudo o que encontrei foi a ideia do agendador de tarefas do Windows ou o melhor da solução. Na verdade, o soluto parou de funcionar no meu pc x64 há algum tempo, por algum motivo estranho. então eu mesmo queria fazer um script que me levou a essa solução final ....

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.