¿Cómo saber cuándo Windows y todos los programas de inicio han completado el arranque?

37

Mi máquina (Windows 7 de 64 bits) tarda unos 3-4 minutos en arrancar por completo. ¿Hay alguna forma de indicar que el arranque está completo, algún tipo de sonido / ventana emergente, ya sea mediante el uso de la función incorporada de Windows o por cualquier aplicación de terceros?

Necesito cuando tanto Windows como todos los programas de inicio hayan terminado de iniciarse

Por lo general, a veces me siento y espero frente a la máquina, ese tiempo podría aprovecharse mejor para un rapidito.

Así es como se ve, cuando la luz del disco duro deja de parpadear:

ingrese la descripción de la imagen aquí

Firee
fuente
2
Después del proceso de inicio de sesión ... Todos los procesos en segundo plano, etc. Todo el shebang
Firee
3
Es posible que desee agregar lo que quiere decir con "arranque completo": todos los programas cargados o solo el sistema operativo Windows cargado.
zurfyx
3
Estoy bastante seguro de que no hay una respuesta definitiva. Algunos procesos en segundo plano esperan que la PC esté inactiva antes de comenzar, algunos solo esperan un período fijo. Es difícil predecir que FooUpdater.EXEdormirá durante 7 minutos.
MSalters
2
¿Quizás, en cambio, detectar cuándo los procesos ocupados eventualmente se vuelven inactivos para usted? Si es así, ¿no es suficiente el desencadenador de tareas "En espera" del Administrador de tareas de Windows?
Ƭᴇcʜιᴇ007
2
¿Son 3-4 minutos realmente tiempo suficiente para un "rapidito"? oO
Jason C

Respuestas:

25

Aquí hay varias respuestas potencialmente útiles, pero creo que hay dos puntos importantes que no se han hecho:

  1. No, no es posible determinar mediante programación que Windows y todos los programas de inicio hayan terminado de iniciarse. Este es esencialmente el problema de detención y ningún programa por ahí podrá responder la pregunta "Para este programa arbitrario, ¿en qué momento deberíamos decir que se ha cargado?".

  2. ¿Cuál es el problema real que estás tratando de resolver? Todas las respuestas aquí intentan encontrar una solución a su pregunta, pero la pregunta en sí misma parece que le puede faltar información importante. Queremos resolver su problema, no solo responder la pregunta .

Leyendo su pregunta nuevamente y siguiendo exactamente lo que ha dicho, mi respuesta sería una de:

  • Simplemente no te preocupes por eso y comienza a usar tu computadora. Las tareas en primer plano tienen prioridad y, a menos que tenga algo realmente inusual, no debería importar si se están ejecutando tareas en segundo plano.

O:

  • Mire manualmente el sistema varias veces y calcule la cantidad máxima de tiempo que lleva antes de que el sistema esté "listo" de acuerdo con las métricas que tenga. Obtenga un pequeño programa de temporizador o script y agréguelo al inicio de su sistema. Puede mostrar un mensaje o reproducir un sonido cuando haya transcurrido el tiempo elegido.

Es posible que esto no responda directamente a su pregunta actual, pero espero que sea útil.

Mella
fuente
3
Esta es la mejor respuesta (y la más técnicamente correcta) por una razón de la OMI: destaca la ambigüedad en la definición de "todos los programas de inicio han terminado de iniciarse". Estoy de acuerdo en que el problema de detención es bastante relevante, pero solo en el caso de que los procesos iniciados lleguen a su fin. Aunque se puede monitorear el consumo de CPU de varios programas después del arranque, y usar un umbral predefinido para determinar cuándo la computadora ha "terminado de arrancar", esto cubre solo un pequeño subconjunto de casos (en particular, procesos cuyo rendimiento de carga está mayormente vinculado a la CPU) .
Avance
@Breakthrough Buen punto y edición, gracias. Realmente estaba tratando de expresar sucintamente la idea de que para cualquier programa ejecutado en el inicio, podría hacer cualquier cantidad de cosas impredecibles: (1) iniciar y luego finalizar, (2) iniciar y continuar ejecutándose, (3) iniciar y generar más procesos, luego hacer (1) o (2). Incluso basar la idea de "completo" en el consumo de recursos no es ideal debido a la carga retrasada y al hecho de que algunos programas incluso pueden estar esperando hasta que el sistema esté "inactivo" para comenzar a hacer un trabajo adicional.
Nick
hace que uno se pregunte qué tan útil sería una bandera "inactiva" o "arrancada" para procesos persistentes / demonio (advertencia, solo es útil si se implementa en cada proceso que está esperando ...).
Avance
@Breakthrough Si no me equivoco, Linux ' systemdtiene esto, donde, en principio, uno podría iniciar un servicio después de que todos los demás hayan comenzado a través de su mecanismo de dependencia. Sin embargo, tendría que especificarlos todos manualmente (mi systemdconocimiento no es tan bueno).
rubenvb
@ Nick Gracias por el razonamiento detrás de tratar de encontrar la solución, en realidad proporciona una nueva perspectiva. Asumí que habría una solución muy simple, pero no lo parece ... Por el momento usaría un pequeño programa de temporizador, que me permite saber que el tiempo especificado ha terminado.
Firee
11

¿Por qué no usar el Programador de tareas de Windows y el Event ID 100 para reproducir un sonido personalizado cuando Windows realmente ha terminado?

En Activadores, seleccione "En un evento" y

  • Registro: LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • Fuente: Diagnóstico-Rendimiento
  • Id. De evento: 100

En Acciones, seleccione "Iniciar un programa" con

nixda
fuente
1
Necesito
2
FWIW: En el momento en que se dio esta respuesta, el OP solo mencionó "inicio de Windows". ¡La segunda parte, que incluye todos los programas de inicio, se agregó más tarde!
nixda
Comentario de un usuario anónimo: este método funciona realmente bien si el tiempo de inicio es un poco lento o muy lento. Es simple y preciso. Sin embargo, si su tiempo de inicio es rápido, en unos 3 minutos, (o dentro de los límites definidos por el diseño de Windows) 100 ningún caso se registra, por lo que no se reproducirá sonido
nixda
9

Windows tratará el inicio terminado si estuvo inactivo al 80% (excluyendo la actividad de la CPU y el disco de baja prioridad) durante 10 segundos después de llegar a la IU de escritorio.

Para ver el tiempo exacto de arranque, use xbootmgr para rastrear por qué Windows arranca lentamente .

magicandre1981
fuente
1
Mi pregunta no es acelerar el arranque, solo quiero una indicación de cuándo se ha completado todo el arranque (con todos los programas de inicio, etc.)
Firee
55
deberías arreglar el arranque lento en lugar de intentar reproducir un sonido.
magicandre1981
8

Tengo un programa gratuito instalado que he usado durante mucho tiempo, Soluto: https://www.soluto.com/

Solo soy un usuario, no estoy conectado.

Esto funciona para mi.

Realiza una cuenta regresiva y le permite seleccionar exactamente lo que desea cargar en el arranque.

También le permite retrasar los inicios.

Xavierjazz
fuente
¿Funciona sin conexión?
Firee
Este sitio / empresa ahora ofrece una aplicación móvil para funciones de seguridad remota; Supongo que el dominio es propiedad de otra persona ahora.
mbuc91
6

Ejecute este script de Python al inicio. Reproducirá el sonido de inicio una vez que el uso de la CPU haya sido inferior al 20 por ciento durante 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()
Benjamin Schug
fuente
2

Puede agregar un sonido al inicio.

Puede retrasar los procesos de inicio y poner un efecto de sonido para que se ejecute primero. La herramienta Startup Delayer hace esto.

ingrese la descripción de la imagen aquí

stderr
fuente
¿Esto detectará el arranque completo o tengo que poner un temporizador ideal?
Firee
@Firee No hay necesidad de un temporizador, solo use la opción "retraso automático"
stderr
1

Esto puede no ser muy efectivo, pero es barato.

Por lo general, miro el LED de actividad del disco duro (puede identificarlo en la carcasa con un icono de base de datos), hasta que el LED se estabiliza y parpadea con poca frecuencia, entonces sé que ahora puedo usar la PC sin mucho retraso. El disco duro suele ser el cuello de botella de la PC, y si no se usa mucho, entonces tienes espacio para trabajar.

Espero que ayude.

MadeOfAir
fuente
1
Eso se sabe, pero tengo que sentarme y esperar ...
Firee
44
No tienes que hacerlo Puede delegar a cualquiera en la casa para que lo haga por usted. Imagínelo. ¡es fácil!. : D
MadeOfAir
0

Nunca lo he usado, pero el Programador de tareas de Windows le permitirá crear una tarea que se desencadena para ejecutarse "Al inicio" o "Al iniciar sesión". Es posible que pueda programar una tarea para ejecutar un script de PowerShell para acceder al método Console.Beep () de .NET Framework. Incluso puede convertirlo en una melodía decente.

De Hey Scripting Guy! Blog

[console]::beep(500,300)

Cambie el valor del primer número para alterar el tono (no se puede escuchar nada menor que 190 o mayor que 8500), y cambie el valor del segundo número para alterar la duración

Editar: como resultado, el método Console.Beep () puede no funcionar en sistemas de 64 bits de acuerdo con la documentación de MSDN .NET. Probó un pitido en un script de PowerShell y funciona bien.

También es posible que desee verificar sus procesos de inicio. Puede hacerlo ejecutando msconfig y haciendo clic en los servicios. También puede usar la herramienta Sysinternals Autoruns.

Sandwich de Goldfish
fuente
0

Según la documentación de Windows, el último orden de carga es el registro currentuser / runOnce (después de la carpeta de inicio) ... pero cualquiera que sea el orden de carga, algunos de los programas pueden tardar mucho tiempo en iniciarse.

Entonces, tal vez ver la actividad de la CPU en el archivo por lotes puede ser una buena solución:

@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
)

... y BEEEPing después de decir que en las últimas 10 comprobaciones de carga de CPU, hubo una carga de CPU inferior al 15%. este archivo por lotes se puede iniciar por enlace en la carpeta de inicio, o mejor en el registro HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

Asain Kujovic
fuente
0

Tu escribiste:

«Mi máquina (Windows 7 de 64 bits) tarda unos 3-4 minutos en arrancar por completo ...»

Un arranque "normal" toma alrededor de 30 segundos, incluido el acceso a la cuenta de usuario. Hay algo mal y esto debe ser solucionado. Para solucionarlo, debe obtener los datos. Le sugiero dos utilidades para solucionar este problema:

1) Autoruns

Con este puede verificar todos los procesos, programas y controladores cargados durante el proceso de arranque. Tka care: esta es una herramienta muy poderosa y NO elimine elementos a menos que sepa lo que está haciendo. Pero puede desmarcar (deshabilitar) algunos programas de inicio de sesión ...

2) Explorador del sistema

Con esta herramienta, puede ver todo el proceso iniciado y el historial de ellos hasta que se inicie System Explorer. También es posible escanear todos estos procesos por motivos de seguridad (en comparación con una base de datos de procesos ...)

Comprueba esto primero, danos tu opinión.

También puede verificar los servicios al inicio services.mscy el estado de los dispositivos con devmgmt.msc(triángulo amarillo para dispositivos defectuosos, disco duro en modo PIO en lugar de DMA, etc.) en las herramientas administrativas de Windows ...

Espero que esto ayude. Haznos saber.

climenole
fuente
Mi preocupación no es por qué el tiempo de arranque es tan largo. Puede que tenga gran cantidad de programas de inicio, etc ... Sólo necesito una indicación cuando todo el proceso de arranque es completa, que incluye Windows, inicio de sesión, todos los programas de inicio, etc
Firee
Simplemente consulte con el administrador de tareas ... Cuando la CPU está en el estado inactivo, ya está hecho. Toma 3,4 minutos para tu PC, ¿verdad? : - /
climenole
Así es como se ve, después de que las luces de los discos duros dejan de parpadear i.stack.imgur.com/nVToB.png
Firee
"Algo está mal y esto debe solucionarse". O simplemente es el antivirus que hace su trabajo muy a fondo ...
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Quizás. Como dije, mi preocupación no es cuánto tiempo lleva, solo necesito saber cuándo se completó y puedo comenzar a usar el sistema sin el posible retraso debido al proceso en segundo plano todavía en proceso de inicio.
Firee
0

Había estado buscando algo como esto, y encontré la respuesta

probablemente publicaré el código real más adelante, pero aquí va

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

solo guarde el contenido de la última parte como un archivo vbs y ejecútelo, puede sondear cada evento del sistema y extraer su mensaje que se muestra, simple.

lo que hay que hacer para encontrar la finalización de la secuencia de inicio es ejecutar este script solo hasta que la identificación del evento sea '100' que corresponde al proceso de finalización del inicio en los eventos del sistema

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

Entonces, cuando tenga este script en el inicio, sondeará todos los eventos y esperará a que la identificación del evento sea 100 y lo alertará. lo mismo puede emplearse en cualquier herramienta de secuencias de comandos como autoit

Solo quería que todos lo supieran. porque cuando busqué esto todo lo que encontré fue la idea del planificador de tareas de Windows o soluto en el mejor de los casos. En realidad, Soluto dejó de funcionar en mi PC x64 hace un tiempo por alguna extraña razón. Así que quería hacer un guión yo mismo que me llevó a esta solución final ...

rajeshontheweb
fuente