Jak stwierdzić, kiedy system Windows i wszystkie programy startowe zakończyły uruchamianie?


37

Całkowite uruchomienie mojej maszyny (Windows 7 64-bit) zajmuje około 3-4 minut. Czy jest jakiś sposób, który wskaże, że rozruch został zakończony, jakiś dźwięk / wyskakujące okienko, za pomocą wbudowanej funkcji systemu Windows lub aplikacji innej firmy?

Wymagam, gdy zarówno Windows, jak i wszystkie programy startowe zakończą uruchamianie

Zwykle czasami siedzę i czekam przed maszyną, że czas ten można lepiej wykorzystać na szybki numerek.

Tak to wygląda, gdy kontrolka dysku twardego przestaje migać:

wprowadź opis zdjęcia tutaj


2
Po zalogowaniu ... Wszystkie procesy w tle itp. Cały
shebang

3
Możesz dodać, co rozumiesz przez „zakończony rozruch”: wszystkie programy załadowane lub tylko system operacyjny Windows załadowany.
zurfyx

3
Jestem całkiem pewien, że nie ma ostatecznej odpowiedzi. Niektóre procesy w tle czekają, aż komputer przestanie działać, zanim zaczną, inne po prostu czekają na określony czas. Trudno przewidzieć, że FooUpdater.EXEbędzie spał przez 7 minut.
MSalters

2
Być może zamiast tego, czy wykrywanie zajętych procesów stanie się dla ciebie bezczynne? Jeśli tak, to czy wyzwalacz zadania „W stanie bezczynności” Menedżera zadań Windows nie wystarcza?
Ƭᴇcʜιᴇ007

2
Czy 3-4 minuty to naprawdę wystarczająco dużo czasu na „szybki numerek”? oO
Jason C

Odpowiedzi:


25

Istnieje kilka potencjalnie pomocnych odpowiedzi, ale myślę, że nie zostały zawarte dwie ważne kwestie:

  1. Nie, nie można programowo ustalić, czy system Windows i wszystkie programy startowe zakończyły uruchamianie. Zasadniczo jest to problem zatrzymania i żaden program nie będzie w stanie odpowiedzieć na pytanie „W przypadku tego arbitralnego programu, w którym momencie powinniśmy powiedzieć, że został załadowany?”.

  2. Jaki jest faktyczny problem, który próbujesz rozwiązać? Wszystkie odpowiedzi tutaj próbują znaleźć rozwiązanie dla twojego pytania, ale samo pytanie wydaje się być pozbawione ważnych informacji. Chcemy rozwiązać Twój problem, a nie tylko odpowiedzieć na pytanie .

Ponownie czytając twoje pytanie i kierując się tym, co powiedziałeś, moją odpowiedzią byłoby:

  • Po prostu nie przejmuj się i zacznij korzystać z komputera. Priorytetowe zadania na pierwszym planie i jeśli nie dzieje się coś naprawdę niezwykłego, nie powinno mieć znaczenia, czy zadania w tle są uruchomione.

Lub:

  • Ręcznie obejrzyj system kilka razy i oblicz maksymalny czas potrzebny na „gotowość” systemu, zgodnie z posiadanymi wskaźnikami. Pobierz mały program lub skrypt timera i dodaj go do uruchamiania systemu. Może wyświetlić komunikat lub odtworzyć dźwięk po upływie wybranego czasu.

To może nie odpowiedzieć bezpośrednio na twoje aktualne pytanie, ale mam nadzieję, że jest pomocne.


3
Jest to najlepsza (i najbardziej poprawna technicznie) odpowiedź z jednego powodu IMO: podkreśla niejednoznaczność w definiowaniu „wszystkie programy startowe zakończyły ładowanie”. Zgadzam się, że problem zatrzymania jest dość istotny, ale tylko w przypadku zakończonych uruchomionych procesów. Chociaż można monitorować zużycie procesora przez różne programy po uruchomieniu i używać wstępnie zdefiniowanego progu, aby dyktować, kiedy komputer „zakończy ładowanie”, dotyczy to tylko niewielkiej części przypadków (w szczególności procesów, których wydajność ładowania jest głównie związana z procesorem) .
Przełom

@Breakthrough Dobry punkt i edycja, dzięki. Naprawdę starałem się zwięźle wyrazić ideę, że dla dowolnego programu wykonanego podczas uruchamiania może on wykonać dowolną liczbę nieprzewidzianych rzeczy: (1) uruchomić, a następnie zakończyć, (2) uruchomić i kontynuować, (3) uruchomić i odrodzić dodatkowe procesy, a następnie wykonaj (1) lub (2). Nawet opieranie pojęcia „pełnego” na zużyciu zasobów nie jest idealne ze względu na opóźnione ładowanie i fakt, że niektóre programy mogą nawet czekać, aż system będzie „bezczynny”, aby rozpocząć dodatkową pracę.
Nick

zastanawia się, jak użyteczna byłaby flaga „bezczynności” lub „rozruchu” w procesach trwałych / demonicznych (z zastrzeżeniem, że jest użyteczna tylko wtedy, gdy jest implementowana w każdym procesie, na który czekasz ...).
Przełom

@Breakthrough Jeśli się nie mylę, linux systemdma to, że w zasadzie można uruchomić usługę po tym, jak wszyscy inni zaczną działać poprzez mechanizm zależności. Musisz jednak podać je wszystkie ręcznie (moja systemdwiedza nie jest zbyt dobra).
rubenvb

@Nick Dzięki za uzasadnienie próby znalezienia rozwiązania, w rzeczywistości zapewnia ono nową perspektywę. Zakładałem, że będzie to bardzo proste rozwiązanie, ale nie wydaje się tak ... Na razie użyłbym małego programu czasowego, który informuje mnie, że określony czas się skończył.
Firee,

11

Dlaczego nie skorzystać z Harmonogramu zadań systemu Windows i identyfikatora zdarzenia 100 do odtworzenia niestandardowego dźwięku, gdy system Windows jest naprawdę gotowy?

W obszarze Wyzwalacze wybierz „Na zdarzenie” i

  • Dziennik: LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • Źródło: Wydajność diagnostyczna
  • Identyfikator zdarzenia: 100

W obszarze Działania wybierz opcję „Uruchom program” za pomocą



2
FWIW: W momencie, w którym udzielono tej odpowiedzi, OP wspomniał tylko o „starcie systemu Windows”. Druga część obejmująca wszystkie programy startowe została dodana później!
nixda

Komentarz anonimowego użytkownika: Ta metoda działa naprawdę dobrze, jeśli czas uruchamiania jest nieco wolny lub bardzo wolny. To jest proste i dokładne. Jeśli jednak czas uruchamiania jest szybki, poniżej 3 minut (lub w granicach określonych przez projekt systemu Windows), żadne zdarzenie 100 nie jest rejestrowane, więc nie będzie odtwarzany żaden dźwięk
nixda

9

System Windows traktuje rozruch zakończony, jeśli był bezczynny w 80% (z wyłączeniem procesora o niskim priorytecie i aktywności dysku) przez 10 sekund po osiągnięciu interfejsu użytkownika pulpitu.

Aby zobaczyć dokładny czas uruchamiania, użyj xbootmgr, aby sprawdzić, dlaczego system Windows uruchamia się powoli .


1
Moje pytanie nie polega na przyspieszeniu uruchamiania, chcę tylko wskazać, kiedy całe (z wszystkimi programami startowymi itp.) Uruchamianie jest zakończone
Firee

5
powinieneś naprawić wolny rozruch zamiast próbować odtwarzać dźwięk.
magicandre1981

8

Mam zainstalowany darmowy program, z którego korzystałem od dłuższego czasu, Soluto: https://www.soluto.com/

Jestem tylko użytkownikiem, nie jestem połączony.

Mi to pasuje.

Odlicza i pozwala wybrać tylko to, co chcesz załadować podczas rozruchu.

Pozwala także na opóźnienie startów.


Czy to działa offline?
Firee

Ta strona / firma udostępnia teraz aplikację mobilną do obsługi funkcji zdalnego bezpieczeństwa; Zakładam, że domena jest teraz własnością kogoś innego.
mbuc91

6

Uruchom ten skrypt Python podczas uruchamiania. Będzie odtwarzał dźwięk uruchamiania, gdy użycie procesora spadnie poniżej 20 procent przez 5 kolejnych sekund:

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

Możesz dodać dźwięk do uruchamiania.

Możesz opóźnić procesy uruchamiania i ustawić efekt dźwiękowy do wykonania jako pierwszy. Narzędzie to opóźnia uruchomienie .

wprowadź opis zdjęcia tutaj


Czy wykrywanie rozruchu zakończy się, czy też muszę ustawić idealny zegar?
Firee

@Firee Nie ma potrzeby stosowania timera, wystarczy skorzystać z opcji „automatycznego opóźnienia”
stderr

1

To może nie być bardzo skuteczne, ale jest tanie.

Zwykle patrzę na diodę aktywności dysku twardego (można ją zidentyfikować na obudowie za pomocą ikony bazy danych), dopóki dioda LED nie ustabilizuje się i nie zacznie migać rzadko, wtedy wiem, że mogę teraz używać komputera bez większych opóźnień. Dysk twardy jest zwykle wąskim gardłem komputera, a jeśli nie jest intensywnie używany, masz miejsce do pracy.

Mam nadzieję, że to pomaga.


1
To wiadomo, ale muszę usiąść i czekać ...
Firee,

4
Nie musisz Możesz delegować każdego w domu, aby zrobił to za Ciebie. Wyobraź to sobie. to łatwe!. : D
MadeOfAir

0

Nigdy go nie używałem, ale Harmonogram zadań systemu Windows pozwoli Ci utworzyć zadanie uruchamiane w celu uruchomienia „Przy uruchomieniu” lub „Przy logowaniu”. Może być możliwe zaplanowanie zadania uruchomienia skryptu PowerShell w celu uzyskania dostępu do metody Console.Beep () w .NET Framework. Być może uda ci się zmienić go w przyzwoitą melodię.

Od Hej Skrypciarze! Blog

[console]::beep(500,300)

Zmień wartość pierwszej liczby, aby zmienić wysokość (nic mniejszej niż 190 lub wyższej niż 8500 nie słychać), i zmień wartość drugiej liczby, aby zmienić czas trwania

Edycja: Jak się okazuje, metoda Console.Beep () może nie działać w systemach 64-bitowych zgodnie z dokumentacją MSDN .NET. Przetestowany sygnał dźwiękowy w skrypcie PowerShell i działa dobrze.

Możesz także chcieć sprawdzić swoje procesy uruchamiania. Możesz to zrobić, uruchamiając msconfig i klikając usługi. Możesz także użyć narzędzia Sysinternals Autoruns.


0

Zgodnie z dokumentacją systemu Windows ostatnią w kolejności ładowania jest rejestrujący użytkownik / runOnce rejestru (po folderze uruchamiania) ... ale bez względu na kolejność ładowania niektóre programy mogą wymagać długiego czasu uruchamiania.

Więc może obserwowanie aktywności procesora w pliku wsadowym może być dobrym rozwiązaniem:

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

... i BEEEPing po zauważeniu, że w ostatnich 10 kontrolach obciążenia procesora obciążenie procesora spadło poniżej 15%. ten plik wsadowy można uruchomić za pomocą łącza w folderze startowym lub lepiej w rejestrze HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run


0

Napisałeś:

«Mój komputer (64-bitowy system Windows 7) potrzebuje około 3-4 minut na pełne uruchomienie ...»

„Normalny” rozruch zajmuje około 30 sekund, w tym dostęp do konta użytkownika. Coś jest nie tak i należy to naprawić. Aby to naprawić, musisz uzyskać dane. Sugeruję dwa narzędzia do rozwiązania tego problemu:

1) Autoruns

Dzięki temu możesz sprawdzić każdy proces, program, sterownik załadowany podczas procesu rozruchu. Tka care: jest to bardzo potężne narzędzie i NIE usuwaj elementów, chyba że wiesz, co robisz. Możesz jednak odznaczyć (wyłączyć) niektóre programy logowania do uruchamiania ...

2) Eksplorator systemu

Za pomocą tego narzędzia możesz zobaczyć wszystkie procesy rozpoczęte i ich historię do momentu uruchomienia Eksploratora systemu. Możliwe jest również skanowanie wszystkich tych procesów ze względów bezpieczeństwa (w porównaniu do bazy danych procesów ..)

Sprawdź to najpierw, przekażą nam swoją opinię.

Możesz także sprawdzić usługi przy uruchomieniu services.msci status urządzeń z devmgmt.msc(żółty trójkąt dla wadliwych urządzeń, Dysk twardy w trybie PIO zamiast DMA itd.) W narzędziach administracyjnych systemu Windows ...

Mam nadzieję, że to pomoże. Daj nam znać.


Nie martwię się, dlaczego czas uruchamiania jest tak długi. Mogę mieć wiele programów startowych itp. Potrzebuję tylko wskazania, kiedy cały proces uruchamiania jest zakończony, w tym Windows, Logowanie, wszystkie programy startowe itp.
Firee

Po prostu skontaktuj się z menedżerem zadań ... Gdy procesor jest w stanie bezczynności, jest gotowy. Twój komputer zajmuje 3,4 minuty, prawda? : - /
climenole

Tak to wygląda, gdy kontrolki dysków twardych przestają migać i.stack.imgur.com/nVToB.png
Firee

„Coś jest nie tak i należy to naprawić”. Albo to po prostu program antywirusowy wykonuje swoją pracę bardzo dokładnie ...
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Może. Jak powiedziałem, moim zmartwieniem nie jest to, jak długo to potrwa, muszę tylko wiedzieć, kiedy jest zakończony i mogę zacząć korzystać z systemu bez możliwego opóźnienia z powodu procesu w tle, który jest w trakcie uruchamiania.
Firee,

0

Szukałem czegoś takiego i znalazłem odpowiedź

Prawdopodobnie opublikuję później kod, ale oto on

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

po prostu zapisz zawartość ostatniej części jako plik vbs i uruchom go, możesz odpytać każde zdarzenie systemowe i wyodrębnić wyświetlany komunikat, proste.

aby znaleźć zakończenie sekwencji rozruchowej, należy uruchomić ten skrypt tylko do momentu, gdy identyfikator zdarzenia to „100”, który odpowiada procesowi zakończenia rozruchu w zdarzeniach systemowych

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

Tak więc, kiedy masz ten skrypt podczas uruchamiania, sonduje on wszystkie zdarzenia i czeka na identyfikator zdarzenia równy 100 i ostrzega. to samo można zastosować w dowolnym narzędziu skryptowym, takim jak autoit

Chciałem tylko, żeby wszyscy to wiedzieli. ponieważ kiedy tego szukałem. wszystko, co znalazłem, to pomysł harmonogramu zadań systemu Windows lub soluto w najlepszym wypadku. właściwie soluto przestał działać na moim komputerze x64 z jakiegoś dziwnego powodu. więc chciałem sam napisać skrypt, który doprowadził mnie do tego ostatecznego rozwiązania ....

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.