Wie kann ich feststellen, wann Windows und alle Startprogramme den Startvorgang abgeschlossen haben?

37

Mein Computer (Windows 7 64-Bit) benötigt ca. 3-4 Minuten, um vollständig hochzufahren. Gibt es eine Möglichkeit, die anzeigt, dass der Startvorgang abgeschlossen ist, eine Art Sound / Popup, entweder mithilfe der integrierten Windows-Funktion oder einer Anwendung eines Drittanbieters?

Ich benötige, wenn beide Fenster und alle Startprogramme fertig gebootet sind

Normalerweise sitze ich irgendwann und warte vor der Maschine, diese Zeit könnte besser für einen Quickie genutzt werden.

So sieht es aus, wenn die Festplattenanzeige aufhört zu blinken:

Bildbeschreibung hier eingeben

Firee
quelle
2
Nach dem Anmeldevorgang ... Alle Hintergrundvorgänge usw. Das ganze
Schebang
3
Möglicherweise möchten Sie hinzufügen, was Sie unter "Beendetes Booten" verstehen: alle geladenen Programme oder nur das geladene Windows-Betriebssystem.
Zurfyx
3
Ich bin mir ziemlich sicher, dass es keine endgültige Antwort gibt. Einige Hintergrundprozesse warten, bis der PC inaktiv ist, andere warten nur eine bestimmte Zeit. Es ist schwer vorherzusagen, dass FooUpdater.EXEes 7 Minuten lang schlafen wird.
MSalters
2
Wäre es vielleicht besser zu erkennen, wenn geschäftige Prozesse für Sie zum Leerlauf werden? Wenn ja, reicht der Task-Trigger "On Idle" des Windows-Task-Managers nicht aus?
Ƭᴇc Marιᴇ007
2
Reichen 3-4 Minuten wirklich für einen "Quickie"? oO
Jason C

Antworten:

25

Hier gibt es mehrere potenziell hilfreiche Antworten, aber ich denke, es gibt zwei wichtige Punkte, die nicht angesprochen wurden:

  1. Nein, es ist nicht möglich , programmgesteuert festzustellen, ob Windows und alle Startprogramme den Startvorgang abgeschlossen haben. Dies ist im Wesentlichen das Problem des Anhaltens, und kein Programm da draußen kann die Frage beantworten: "Zu welchem ​​Zeitpunkt sollte für dieses beliebige Programm gesagt werden, dass es geladen wurde?".

  2. Was ist das eigentliche Problem, das Sie zu lösen versuchen? Alle Antworten hier versuchen, eine Lösung für Ihre Frage zu finden, aber die Frage selbst scheint einige wichtige Informationen zu vermissen. Wir wollen Ihr Problem lösen, nicht nur die Frage beantworten .

Wenn ich Ihre Frage noch einmal lese und mich nur an Ihre Aussagen halte, würde ich eine der folgenden Antworten erhalten:

  • Machen Sie sich keine Sorgen und starten Sie Ihren Computer. Vordergrundaufgaben werden priorisiert und es sollte keine Rolle spielen, ob Hintergrundaufgaben ausgeführt werden, es sei denn, Sie haben etwas wirklich Ungewöhnliches vor sich.

Oder:

  • Beobachten Sie das System ein paar Mal manuell und ermitteln Sie die maximale Zeit, die erforderlich ist, um das System gemäß den verfügbaren Messwerten "betriebsbereit" zu machen. Holen Sie sich ein kleines Timer-Programm oder Skript und fügen Sie es dem Start Ihres Systems hinzu. Es kann eine Nachricht anzeigen oder einen Ton abspielen, wenn die von Ihnen gewählte Zeit abgelaufen ist.

Dies beantwortet Ihre aktuelle Frage möglicherweise nicht direkt, ist aber hoffentlich hilfreich.

Nick
quelle
3
Dies ist die beste (und technisch korrekteste) Antwort aus einem Grund, IMO: Sie unterstreicht die Unklarheit bei der Definition von "Alle Startprogramme sind gebootet". Ich stimme zu, dass das Stopp-Problem durchaus relevant ist, aber nur für den Fall, dass die gestarteten Prozesse zum Abschluss kommen. Man könnte zwar den CPU-Verbrauch verschiedener Programme nach dem Booten überwachen und anhand eines vordefinierten Schwellenwerts bestimmen, wann der Computer "fertig gebootet" ist, dies deckt jedoch nur einen kleinen Teil der Fälle ab (insbesondere Prozesse, deren Ladeleistung hauptsächlich an die CPU gebunden ist). .
Durchbruch
@Breakthrough Guter Punkt und bearbeiten, danke. Ich habe wirklich versucht, kurz und bündig die Idee auszudrücken, dass für ein bestimmtes Programm, das beim Start ausgeführt wird, eine beliebige Anzahl von unvorhersehbaren Dingen ausgeführt werden kann: (1) Starten und Beenden, (2) Starten und Weiterlaufen, (3) Starten und zusätzliches Spawnen Prozesse, dann tun (1) oder (2). Sogar die Idee, "vollständig" auf den Ressourcenverbrauch abzustimmen, ist nicht ideal, da es zu Verzögerungen beim Laden kommt und einige Programme möglicherweise warten, bis das System "untätig" ist, um zusätzliche Arbeiten auszuführen.
Nick
fragt man sich, wie nützlich ein Flag "idle" oder "booted" für persistente / daemon-Prozesse wäre (Achtung, es ist nur nützlich, wenn es in jedem Prozess implementiert ist, auf den Sie warten ...).
Durchbruch
@Breakthrough Wenn ich mich nicht irre, hat Linux systemddies, wo man im Prinzip einen Dienst starten kann, nachdem alle anderen über seinen Abhängigkeitsmechanismus gestartet wurden. Sie müssten jedoch alle manuell angeben (mein systemdWissen ist nicht so gut).
Rubenvb
@Nick Vielen Dank für die Überlegungen, die dahinter stecken, die Lösung zu finden. Sie bietet tatsächlich eine neue Perspektive. Ich nahm an, dass es eine sehr einfache Lösung geben würde, aber es scheint nicht so zu sein ... Zur Zeit würde ich ein kleines Timer-Programm verwenden, das mich darüber informiert, dass die angegebene Zeit abgelaufen ist.
Firee
11

Warum nicht Windows Task Scheduler und Event ID 100 verwenden, um einen benutzerdefinierten Sound abzuspielen, wenn Windows wirklich fertig ist?

Wählen Sie unter Auslöser "Bei einem Ereignis" und

  • Protokoll: LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • Quelle: Diagnoseleistung
  • Ereignis-ID: 100

Wählen Sie unter Aktionen "Programm starten" mit

  • Programm / Skript: "%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe"
  • Argumente hinzufügen: "%windir%\Media\Windows Logon Sound.wav"

    Event ID: 100   
    Decription: Windows has started up
    

    Quelle Ereignis - ID 100: Windows - Diagnose-Leistung

Nixda
quelle
1
Ich benötige, wenn beide Fenster und alle Startprogramme fertig sind
Firee
2
FWIW: Als diese Antwort gegeben wurde, erwähnte das OP nur "Windows-Start". Der zweite Teil mit allen Startprogrammen wurde später hinzugefügt!
Nixda
Kommentar eines anonymen Benutzers: Diese Methode funktioniert sehr gut, wenn Ihre Startzeit etwas langsam oder sehr langsam ist. Es ist einfach und genau. Wenn Ihre Startzeit jedoch kürzer als 3 Minuten (oder innerhalb der vom Windows-Design festgelegten Grenzen) ist, wird kein Ereignis 100 protokolliert, sodass kein Ton
abgespielt
9

Windows behandelt den Startvorgang als beendet, wenn er nach Erreichen der Desktop-Benutzeroberfläche 10 Sekunden lang zu 80% im Leerlauf war (ohne CPU- und Festplattenaktivität mit niedriger Priorität).

Um die genaue Startzeit zu ermitteln, verwenden Sie xbootmgr, um festzustellen, warum Windows langsam startet .

magicandre1981
quelle
1
Meine Frage ist nicht, das Booten zu beschleunigen, ich möchte nur eine Anzeige, wann das gesamte Booten (mit allen Startprogrammen usw.) abgeschlossen ist
Firee
5
Sie sollten den langsamen Systemstart korrigieren, anstatt zu versuchen, einen Sound abzuspielen.
magicandre1981
8

Ich habe ein kostenloses Programm installiert, das ich seit langer Zeit benutze, Soluto: https://www.soluto.com/

Ich bin nur ein Benutzer, nicht verbunden.

Für mich geht das.

Es wird heruntergezählt und Sie können auswählen, was Sie beim Booten laden möchten.

Sie können den Start auch verzögern.

Xavierjazz
quelle
Funktioniert es offline?
Firee
Diese Site / Firma bietet jetzt eine mobile App für Remote-Sicherheitsfunktionen. Ich gehe davon aus, dass die Domain jetzt jemand anderem gehört.
mbuc91
6

Führen Sie dieses Python-Skript beim Start aus. Der Startsound wird abgespielt, sobald die CPU-Auslastung 5 Sekunden lang unter 20 Prozent gesunken ist:

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
quelle
2

Sie können dem Start einen Ton hinzufügen.

Sie können den Startvorgang verzögern und einen Soundeffekt zuerst ausführen. Das Tool Startup Delayer erledigt dies.

Bildbeschreibung hier eingeben

stderr
quelle
Wird dieser Erkennungsstart abgeschlossen, oder muss ich einen idealen Timer einstellen?
Firee
@Firee Es ist kein Timer erforderlich, verwenden Sie einfach die Option "Automatische Verzögerung"
stderr
1

Dies mag nicht sehr effektiv sein, ist aber billig.

Normalerweise schaue ich mir die LED für die Festplattenaktivität an (Sie erkennen sie am Gehäuse an einem Datenbanksymbol), bis sich die LED stabilisiert und selten blinkt. Dann weiß ich, dass ich den PC jetzt ohne große Verzögerung verwenden kann. Die Festplatte ist normalerweise der Engpass des PCs, und wenn sie nicht intensiv genutzt wird, haben Sie Platz für Ihre Arbeit.

Hoffentlich hilft das.

MadeOfAir
quelle
1
Das ist bekannt, aber ich muss sitzen und warten ...
Firee
4
Das musst du nicht. Sie können jeden im Haus beauftragen, dies für Sie zu tun. Stellen Sie es sich vor. es ist einfach!. : D
MadeOfAir
0

Ich habe es selbst noch nie verwendet, aber mit Windows Task Scheduler können Sie eine Aufgabe erstellen, die ausgelöst wird, um "Beim Start" oder "Bei der Anmeldung" auszuführen. Möglicherweise können Sie eine Aufgabe zum Ausführen eines Powershell-Skripts planen, um auf die Console.Beep () - Methode von .NET Framework zuzugreifen . Sie können es sogar in eine anständige Melodie verwandeln.

Von Hey Scripting Guy! Blog

[console]::beep(500,300)

Ändern Sie den Wert der ersten Zahl, um die Tonhöhe zu ändern (alles, was niedriger als 190 oder höher als 8500 ist, kann nicht gehört werden), und ändern Sie den Wert der zweiten Zahl, um die Dauer zu ändern

Bearbeiten: Wie sich herausstellt, funktioniert die Console.Beep () -Methode möglicherweise nicht auf 64-Bit-Systemen gemäß der MSDN .NET-Dokumentation. Testete das Piepen in einem PowerShell-Skript und es funktioniert einwandfrei.

Möglicherweise möchten Sie auch in Ihre Startvorgänge einchecken. Sie können dies tun, indem Sie msconfig ausführen und auf Dienste klicken. Sie können auch das Sysinternals-Tool Autoruns verwenden.

Goldfisch-Sandwich
quelle
0

Bei der Windows-Dokumentation ist die letzte in der Ladereihenfolge die Registrierung currentuser / runOnce (nach dem Startordner). Unabhängig von der Ladereihenfolge können einige Programme lange Startzeiten benötigen.

Vielleicht kann es eine gute Lösung sein, die CPU-Aktivität in einer Batch-Datei zu beobachten:

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

... und BEEEPing nachdem festgestellt wurde, dass in den letzten 10 CPU-Lastprüfungen eine CPU-Last unter 15% auftrat. Diese Batchdatei kann durch Verknüpfung im Startordner oder besser in der Registrierung HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run gestartet werden

Asain Kujovic
quelle
0

Sie schrieben:

«Mein Computer (Windows 7 64-Bit) benötigt ca. 3-4 Minuten, um vollständig zu booten ...»

Ein "normaler" Start dauert ca. 30 Sekunden, einschließlich des Zugriffs auf das Benutzerkonto. Irgendetwas stimmt nicht und das muss behoben sein. Um das Problem zu beheben, müssen Sie die Daten abrufen. Ich schlage Ihnen zwei Dienstprogramme vor, um dieses Problem zu beheben:

1) Autoruns

Mit diesem können Sie jeden Prozess, jedes Programm und jeden Treiber überprüfen, die während des Startvorgangs geladen wurden. Tka care: Dies ist ein sehr leistungsfähiges Tool. Löschen Sie KEINE Elemente, es sei denn, Sie wissen, was Sie tun. Sie können jedoch Uncheck (deaktivieren) einige Startanmeldeprogramme ...

2) System Explorer

Mit diesem Tool können Sie alle gestarteten Prozesse und deren Verlauf anzeigen, bis der System Explorer gestartet wird. Es ist auch möglich, alle diese Prozesse aus Sicherheitsgründen zu scannen (im Vergleich zu einer Prozessdatenbank).

Überprüfen Sie dies zuerst sie geben uns ein Feedback.

Sie können die Dienste auch beim Start mit services.mscund den Status der Geräte mit devmgmt.msc(gelbes Dreieck für defekte Geräte, Festplatte im PIO-Modus anstelle von DMA usw.) in den Windows-Verwaltungstools überprüfen.

Ich hoffe das hilft. Lass uns wissen.

Climenol
quelle
Meine Sorge ist nicht, warum die Startzeit so lang ist. Ich habe möglicherweise viele Startprogramme usw. ... Ich brauche nur eine Anzeige, wenn der gesamte Startvorgang abgeschlossen ist, einschließlich Windows, Anmeldung, aller Startprogramme usw.
Firee
Wenden Sie sich einfach an den Task-Manager. Wenn sich die CPU im Leerlauf befindet, ist der Vorgang abgeschlossen. Dauert 3,4 Minuten für Ihren PC, oder? : - /
Climenole
So sieht es aus, nachdem die Festplattenlichter aufgehört haben zu
Firee
Msgstr "Etwas stimmt nicht und das muss behoben sein". Oder es ist nur das Antivirus, das seine Arbeit sehr, sehr gründlich
erledigt
@ ThorbjørnRavnAndersen Vielleicht. Wie ich sagte, ist meine Sorge nicht, wie lange es dauert, ich muss nur wissen, wann es abgeschlossen ist und ich kann das System ohne die mögliche Verzögerung aufgrund des Hintergrundprozesses, der sich noch im Startprozess befindet, verwenden.
Firee
0

Ich hatte nach so etwas gesucht und fand die Antwort

Ich werde den eigentlichen Code wahrscheinlich später veröffentlichen, aber hier ist er

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

Speichern Sie einfach den Inhalt des letzten Teils als VBS-Datei und führen Sie ihn aus. Sie können jedes Systemereignis abfragen und die angezeigte Meldung auf einfache Weise extrahieren.

Um die Beendigung der Startsequenz zu ermitteln, muss dieses Skript nur so lange ausgeführt werden, bis die Ereignis-ID '100' lautet, was dem Startabschlussprozess in den Systemereignissen entspricht

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

Wenn Sie dieses Skript beim Start haben, werden alle Ereignisse abgefragt und es wird darauf gewartet, dass die Ereignis-ID 100 ist, und Sie werden gewarnt. Das gleiche kann in jedem Skript-Tool wie autoit verwendet werden

Ich wollte nur, dass alle es wissen. denn als ich danach gesucht habe. Alles, was ich fand, war die Windows Task Scheduler Idee oder Soluto am besten. Eigentlich hat Soluto vor einiger Zeit aus irgendeinem Grund aufgehört, an meinem x64-PC zu arbeiten. Also wollte ich selbst ein Drehbuch schreiben, das mich zu dieser endgültigen Lösung führte ...

Rajeshontheweb
quelle