Как определить, когда Windows и все автозагрузки завершены?


37

Моя машина (Windows 7 64-битная) занимает около 3-4 минут, чтобы полностью загрузиться. Есть ли способ указать, что загрузка завершена, какой-то звук / всплывающее окно, либо с помощью встроенной функции Windows, либо с помощью любого стороннего приложения?

Требуется, когда оба окна и все программы запуска закончили загрузку

Я обычно когда-нибудь сижу и жду перед машиной, это время можно лучше использовать для быстрого доступа.

Вот как это выглядит, когда индикатор жесткого диска перестает мигать:

введите описание изображения здесь


2
После входа в систему ... Все фоновые процессы и т.д .. Весь Shebang
Firee

3
Вы можете добавить, что вы подразумеваете под «завершенной загрузкой»: загружены все программы или только ОС Windows.
zurfyx

3
Я уверен, что нет однозначного ответа. Некоторые фоновые процессы ждут, пока ПК не будет работать, прежде чем они начнутся, другие просто ждут фиксированный период. Трудно предсказать, что FooUpdater.EXEбудет спать 7 минут.
MSalters

2
Возможно, вместо этого, будет ли обнаружение, когда занятые процессы в конечном итоге станут для вас праздными? Если да, то не достаточно ли триггера задач «В режиме ожидания» диспетчера задач Windows?
Ƭᴇcʜιᴇ007

2
Действительно ли 3-4 минуты достаточно для «быстрого»? oO
Джейсон C

Ответы:


25

Здесь есть несколько потенциально полезных ответов, но я думаю, что есть два важных момента, которые не были сделаны:

  1. Нет, невозможно программно определить, что Windows и все программы автозагрузки завершили загрузку. По сути, это проблема остановки, и ни одна программа не сможет ответить на вопрос «Для этой произвольной программы, в какой момент мы должны сказать, что она была загружена?».

  2. Какую реальную проблему вы пытаетесь решить? Все ответы здесь пытаются найти решение вашего вопроса, но сам вопрос кажется, что в нем может отсутствовать некоторая важная информация. Мы хотим решить вашу проблему, а не просто ответить на вопрос .

Читая ваш вопрос еще раз и исходя из того, что вы сказали, мой ответ будет одним из:

  • Просто не беспокойтесь об этом и начните использовать свой компьютер. Задачи переднего плана имеют приоритет, и если у вас нет чего-то действительно необычного, это не должно иметь значения, если фоновые задачи выполняются.

Или:

  • Вручную просмотрите систему несколько раз и определите максимальное количество времени, необходимое для того, чтобы система была «готова», в зависимости от имеющихся у вас показателей. Получите небольшую программу или скрипт для таймера и добавьте ее в автозагрузку вашей системы. Он может отображать сообщение или воспроизводить звук по истечении выбранного вами времени.

Это может не отвечать непосредственно на ваш текущий вопрос, но, надеюсь, это полезно.


3
Это лучший (и наиболее технически правильный) ответ по одной из причин IMO: он подчеркивает неоднозначность определения «все программы запуска закончили загрузку». Я согласен с тем, что проблема остановки довольно актуальна, но только в случае запуска запущенных процессов. Несмотря на то, что можно отслеживать потребление ресурсов ЦП различными программами после загрузки и использовать предопределенный порог, чтобы определять, когда компьютер «завершил загрузку», это охватывает только небольшое подмножество случаев (в частности, процессы, производительность загрузки которых в основном связана с ЦП) ,
Прорыв

@ Прорыв Хороший момент и редактировать, спасибо. Я действительно пытался кратко выразить идею о том, что для любой конкретной программы, выполняемой при запуске, она может делать любое количество непредсказуемых вещей: (1) запуск и затем завершение, (2) запуск и продолжение работы, (3) запуск и добавление дополнительных процессы, затем сделать (1) или (2). Даже основание идеи «завершить» на потреблении ресурсов не является идеальным из-за отложенной загрузки и того факта, что некоторые программы могут даже ждать, пока система «не будет работать», чтобы начать выполнять дополнительную работу.
Ник

заставляет задуматься, насколько полезен флаг «бездействия» или «загружен» для постоянных процессов / процессов-демонов (будьте осторожны, он полезен только в том случае, если он реализован в каждом процессе, который вы ожидаете ...).
Прорыв

@ Brothrough Если я не ошибаюсь, у linux systemdесть это, где, в принципе, можно запустить сервис после того, как все остальные запустят его механизм зависимости. Вы должны были бы указать все их вручную, хотя (мои systemdзнания не так уж велики).
rubenvb

@Nick Спасибо за обоснование попыток найти решение, оно действительно дает новую перспективу. Я предполагал, что могло бы быть очень простое решение, но это не так ... Пока я бы использовал небольшую программу таймера, которая позволяет мне знать, что указанное время истекло.
Firee

11

Почему бы не использовать Windows Task Scheduler и Event ID 100 для воспроизведения пользовательского звука, когда Windows действительно закончена?

В разделе «Триггеры» выберите «По событию» и

  • Журнал: LogMicrosoft-Windows-Диагностика-Производительность / Оперативный
  • Источник: Диагностика-Производительность
  • Код события: 100

В разделе «Действия» выберите «Запустить программу» с помощью


1
Требуется, когда оба окна и все программы запуска закончили загрузку
Firee

2
FWIW: В то время, когда был дан этот ответ, OP упомянул только «запуск Windows». Вторая часть, включающая все программы запуска, была добавлена ​​позже!
nixda

Комментарий анонимного пользователя: Этот метод работает очень хорошо, если время запуска немного медленное или очень медленное. Это просто и точно. Однако, если ваше время запуска короткое, менее 3 минут (или в пределах, определенных Windows Design), событие 100 не регистрируется, поэтому звук не воспроизводится
nixda

9

Windows будет считать загрузку завершенной, если она простаивала на 80% (исключая низкоприоритетные ресурсы процессора и диска) в течение 10 секунд после достижения рабочего стола.

Чтобы увидеть точное время загрузки, используйте xbootmgr, чтобы отследить, почему Windows загружается медленно .


1
Мой вопрос не в том, чтобы ускорить загрузку, я просто хочу указать, когда завершится полная (со всеми программами запуска и т. Д.) Загрузка
Firee

5
Вы должны исправить медленную загрузку вместо того, чтобы пытаться воспроизвести звук.
magicandre1981

8

У меня установлена ​​бесплатная программа, которой я давно пользуюсь, Soluto: https://www.soluto.com/

Я просто пользователь, не подключен.

Меня устраивает.

Он выполняет обратный отсчет и позволяет выбрать только то, что вы хотите загрузить при загрузке.

Это также позволяет отложить запуск.


Работает ли он в автономном режиме?
Firee

Этот сайт / компания теперь предоставляет мобильное приложение для удаленных функций безопасности; Я предполагаю, что домен принадлежит кому-то другому сейчас.
mbuc91

6

Запустите этот скрипт Python при запуске. Он будет воспроизводить звук запуска после того, как загрузка процессора будет ниже 20 процентов в течение 5 последовательных секунд:

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

Вы можете добавить звук для запуска.

Вы можете отложить запуск процессов и поставить звуковой эффект, который будет выполнен первым. Инструмент Startup Delayer делает это.

введите описание изображения здесь


Это обнаружит, что загрузка завершена, или я должен поставить идеальный таймер?
Firee

@Firee Там не нужен таймер, просто используйте опцию «автоматическая задержка»
stderr

1

Это может быть не очень эффективно, но это дешево.

Я обычно смотрю на индикатор активности жесткого диска (вы можете определить его на корпусе по значку, похожему на значок базы данных), пока индикатор не стабилизируется и не мигает редко, тогда я знаю, что теперь я могу использовать ПК без особых задержек. Жесткий диск обычно является узким местом ПК, и если он не используется интенсивно, у вас есть место для работы.

Надеюсь, это поможет.


1
Это известно, но я должен сидеть и ждать ...
Firee

4
Вам не нужно. Вы можете поручить кому-нибудь в доме сделать это для вас. Вообразите это. это просто!. : D
MadeOfAir

0

Я никогда не использовал его сам, но Windows Task Scheduler позволит вам создать задачу, которая запускается для запуска «При запуске» или «При входе в систему». Вы можете запланировать задачу для запуска сценария powershell для доступа к методу Console.Beep () .NET Framework. Возможно, вы даже сможете превратить его в приличную мелодию.

С Эй, автор сценариев! Блог

[console]::beep(500,300)

Измените значение первого числа, чтобы изменить высоту тона (ничего ниже 190 или выше, чем 8500, не будет слышно), и измените значение второго числа, чтобы изменить длительность.

Изменить: Как выясняется, метод Console.Beep () может не работать на 64-разрядных системах в соответствии с документацией MSDN .NET. Протестирован звуковой сигнал в скрипте PowerShell, и он работает нормально.

Вы также можете проверить ваши процессы запуска. Вы можете сделать это, запустив msconfig и нажав на сервисы. Вы также можете использовать инструмент автозапуска Sysinternals.


0

По документации Windows последней в порядке загрузки является реестр currentuser / runOnce (после папки запуска) ... но, какой бы ни был порядок загрузки, некоторые программы могут занять много времени при запуске.

Поэтому, возможно, хорошим решением будет отслеживание активности процессора в командном файле:

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

... и ОСТАВАЯСЬ ​​после споттинга, что в последних 10 проверках cpu-load была загрузка cpu ниже 15%. этот пакетный файл можно запустить по ссылке в папке автозагрузки или, что лучше, в реестре HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run


0

Вы написали:

«Моя машина (Windows 7 64-bit) занимает около 3-4 минут, чтобы полностью загрузиться ...»

«Нормальная» загрузка требует 30 секунд включая доступ к учетной записи пользователя. Там что-то не так, и это должно быть исправлено. Для того, чтобы это исправить, вы должны получить данные. Я предлагаю вам две утилиты для устранения этой проблемы:

1) Автозапуск

С этим вы можете проверить каждый процесс, программу, драйвер, загруженный во время процесса загрузки. Tka care: это очень мощный инструмент, и НЕ удаляйте предметы, если вы не знаете, что делаете. Но вы можете снять (отключить) некоторые программы входа в систему при запуске ...

2) Системный обозреватель

С помощью этого инструмента вы сможете увидеть все запущенные процессы и историю их до запуска System Explorer. Также возможно сканировать все эти процессы в целях безопасности (по сравнению с базой данных процесса ..)

Проверьте это сначала они дают нам некоторую обратную связь.

Вы также можете проверить службы при запуске services.mscи состояние устройств devmgmt.msc(желтый треугольник для неисправных устройств, жесткий диск в режиме PIO вместо DMA и т. Д.) В инструментах администрирования Windows ...

Надеюсь, это поможет. Дайте нам знать.


Меня беспокоит не то, почему время загрузки так долго. У меня может быть много программ запуска и т. Д. Мне просто нужно указание, когда завершится весь процесс загрузки, включая Windows, Logon, все программы запуска и т. Д.
Firee

Просто проверьте с помощью диспетчера задач ... Когда процессор находится в состоянии ожидания, все готово. Занимает 3,4 минуты для вашего ПК, верно? : - /
Climenole

Вот как это выглядит, после дисков огни Hard перестанет мигать i.stack.imgur.com/nVToB.png
Firee

«Что-то не так, и это должно быть исправлено». Или это просто антивирус делает свою работу очень очень тщательно ...
Торбьерн Равн Андерсен

@ ThorbjørnRavnAndersen Возможно. Как я уже сказал, мое беспокойство не в том, сколько времени это займет, мне просто нужно знать, когда оно будет завершено, и я могу начать использовать систему без возможной задержки из-за фонового процесса, все еще находящегося в процессе запуска.
Firee

0

Я искал что-то вроде этого, и я нашел ответ

Я опубликую фактический код позже, вероятно, но здесь это идет

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

просто сохраните содержимое последней части в виде файла VBS и запустите его, вы можете опрашивать каждое системное событие и извлекать отображаемое сообщение, просто.

Чтобы найти завершение последовательности загрузки, нужно запустить этот сценарий только до тех пор, пока идентификатор события не станет равным «100», что соответствует процессу завершения загрузки в системных событиях.

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

Таким образом, когда у вас есть этот скрипт при запуске, он будет опрашивать все события и ждать, пока идентификатор события станет равным 100, и предупредить вас. то же самое можно использовать в любом скриптовом инструменте, таком как autoit

Просто хотел, чтобы все это знали. потому что когда я искал это. все, что я нашел, было идеей планировщика задач Windows или Soluto в лучшем случае. На самом деле Soluto перестал работать на моем компьютере x64 по какой-то странной причине. поэтому я хотел сделать сценарий сам, который привел меня к этому окончательному решению ....

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.