Website-Suche

Dieser PowerShell-Befehl listet jede Startanwendung auf, die Windows Ihnen nicht zeigt


Wenn Sie jemals den Task-Manager geöffnet haben, um wie ein verantwortungsbewusster Windows-Benutzer die Start-Apps zu überprüfen, habe ich Neuigkeiten - die Startliste des Windows-Task-Managers belügt Sie. Sie können Ihren PC nicht für schnellere Startzeiten optimieren, indem Sie Start-Apps deaktivieren, wenn Sie nicht alle Startprozesse sehen.

Was Windows Ihnen im Task-Manager zeigt, ist eine kuratierte Liste von Start-Apps aus den Programmen und Diensten, die Sie installiert haben, nicht das gesamte Bild. Die echte Liste der Programme, die sich beim Start von Windows selbst laden, ist viel länger, und Windows beabsichtigt nicht, sie Ihnen zu zeigen, es sei denn, Sie kennen diesen PowerShell-Befehl.

Der PowerShell-Befehl für all Ihre Startbedürfnisse

Eine einzelne Zeile, die überall dort gräbt, wo Windows Dinge versteckt

Öffnen Sie PowerShell, idealerweise als Administrator, da einige dieser Einträge erhöhte Zugriffsrechte erfordern, um angezeigt zu werden, und führen Sie den folgenden Befehl aus:

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-List

Und das war's. Dieser eine Befehl zeigt Ihnen Start-Einträge, auf die der Task-Manager niemals hingewiesen hat. Wenn Sie eine interaktivere Liste bevorzugen, tauschen Sie das Format-List-Flag gegen Out-GridView aus, um eine durchsuchbare, sortierbare Tabelle in einem separaten Fenster zu erhalten. So können Sie Einträge filtern und die Daten, die Sie sehen, tatsächlich verstehen.

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Out-GridView

Zuletzt, aber nicht weniger wichtig, wenn Sie diese Liste für spätere Vergleiche speichern möchten, um beispielsweise ein System über die Zeit zu überprüfen, können Sie die Ergebnisse auch in eine Textdatei weiterleiten:

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-List > C:\startup_audit.txt

Es ist ein relativ einfacher Befehl zu verwenden, sobald man die Syntax verstanden hat, und je nachdem, wie genau man die Leistung seines PCs überwacht, kann er sehr schnell zum Favoriten werden. Es ist auch einer dieser Windows-Befehle, die leicht zu lernen sind, aber einen großen Unterschied machen.

Es gräbt sich durch viel mehr, als du denkst

Autostart-Ordner, Registrierungsschlüssel und alles dazwischen






Der Haupttreiber hinter diesem Befehl ist eine WMI (Windows Management Instrumentation) Klasse namens Win32_StartupCommand, die von Microsoft offiziell als „ein Befehl, der automatisch ausgeführt wird, wenn sich ein Benutzer am Computersystem anmeldet“ definiert ist. Sie wurde sowohl für den lokalen Gebrauch als auch für die Fernverwaltung entwickelt, was bedeutet, dass IT-Administratoren sie auf Netzwerkrechnern ausführen können, ohne sie jemals physisch zu berühren.

Die Klasse stellt acht Eigenschaften für jeden gefundenen Autostarteintrag bereit: Caption, Command, Description, Location, Name, SettingID, User und UserID. Sie sind alle nützlich, aber die beiden, die Sie am meisten benötigen, sind Location und User, da sie Ihnen jeweils mitteilen, wo genau im Registrierungsbereich oder Dateisystem der Eintrag liegt und welchem Konto er gehört.

Windows hat ziemlich viele Orte, an denen Programme sich registrieren können, um beim Start ausgeführt zu werden. Das Problem ist, dass der Task-Manager nur eine Teilmenge davon überwacht. Dieser PowerShell-Befehl zeigt Einträge aus den folgenden Registrierungs-Pfaden an:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run: Gilt für alle Benutzer auf dem Computer. Wird von den meisten normalen Start-Einträgen verwendet.
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run: Wird benutzerspezifisch ausgeführt, wenn ein bestimmter Benutzer sich anmeldet.
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run: Speichert Start-Einträge für 32-Bit-Programme, die auf einer 64-Bit-Version von Windows ausgeführt werden.

Über diese Hauptpfade hinaus gibt es RunOnce-Varianten der ersten beiden Schlüssel, die einmal ausgeführt werden sollen und sich später selbst löschen. Dieser Mechanismus wird von Installationsprogrammen und Update-Diensten verwendet, wird jedoch nicht immer ordnungsgemäß bereinigt. Für den dritten Pfad übernimmt Windows automatisch die Registrierung-Weiterleitung, aber der Task-Manager kann Einträge, die in diesem Knoten liegen, übersehen, wodurch Startregistrierungen von 32-Bit-Programmen auf 64-Bit-Systemen effektiv unsichtbar bleiben, bis man danach sucht.

Und dann gibt es noch Startordner. Genau wie Registrierungseinträge sind diese ebenfalls in pro Benutzer und systemweit wie folgt unterteilt:

  • C:\Users\[Benutzername]\AppData\Roaming\Microsoft\Windows\Startmenü\Programme\Autostart (pro Benutzer)
  • C:\ProgramData\Microsoft\Windows\Startmenü\Programme\Autostart (systemweit)

Alle Programmsymbole, die in diesen Ordnern abgelegt werden, werden beim Start von Windows ausgeführt. Wie Sie sich wahrscheinlich vorstellen können, erscheinen diese Ordner auch über den Befehl Win32_StartupCommand.

Und ja, es fehlen immer noch einige Startzeiten

Wo Dinge sich noch verstecken können

Wenn Sie dachten, Sie hätten alle Startgeheimnisse von Windows mit nur einem Befehl aufgedeckt, liegen Sie nicht falsch. Win32_StartupCommand ist eine Verbesserung gegenüber dem Task-Manager, aber es zeigt Folgendes nicht an:

  • Geplante Aufgaben, die so konfiguriert sind, dass sie beim Anmelden ausgeführt werden
  • Windows-Dienste auf automatische Startart eingestellt
  • Autostart-Erweiterungspunkte (ASEPs)

Die beste Option hier ist, das eigene Sysinternals Autoruns-Tool von Microsoft zu verwenden. Es deckt über 200 Autostart-Standorte ab, einschließlich Browser-Erweiterungen, Shell-Erweiterungen, Winlogon-Benachrichtigungen und mehr.

Das gesagt, ist Autoruns ein separater Download, erfordert eine Installation und ist weitaus überwältigender als ein einfacher PowerShell-Befehl. Außerdem macht nicht alles, was Autoruns Ihnen zeigt, Sinn zum Deaktivieren. Einige davon sind Windows- oder Programmservices, die Sie benötigen, damit das System ordnungsgemäß läuft.

WIn32_StartupCommand trifft den richtigen Punkt zwischen Zugänglichkeit und Detailliertheit für die meisten Benutzer, die einfach ein realistisches Bild davon bekommen möchten, was beim Start geladen wird. Das gilt, es sei denn, Sie möchten jeden einzelnen Prozess wissen, den Windows beim Booten ausführt.

Führen Sie dies einmal aus — Sie werden sehen, warum es wichtig ist

Der schnellste Weg, Ihre Startzeit zu bereinigen

Der offensichtliche Grund, diesen Befehl auszuführen, ist die Startzeit und Leistung. Wenn Ihr Computer beim Starten träge wirkt, könnten Einträge, die der Task-Manager Ihnen nicht zeigt, genau die Lösung sein. Update-Checker, Cloud-Synchronisationsagenten, Telemetrie-Dienste und OEM-Bloatware sind alles Täter, die sich außerhalb der Ansicht des Task-Managers verbergen und Ihr System verlangsamen.

Es gibt auch einen Sicherheitsaspekt, der es wert ist, beachtet zu werden. Registry Run-Keys sind einer der am häufigsten missbrauchten Persistenzmechanismen in Malware. Dieses PowerShell-Kommando regelmäßig auszuführen, die Ausgabe in einer Datei zu speichern und sie mit einer bekannten, sauberen Basislinie zu vergleichen, ist eine schnelle Möglichkeit, unautorisierte Ergänzungen zu erkennen, bevor sie sich zu einem größeren Problem entwickeln. Deshalb ist dieses Kommando eines meiner am häufigsten verwendeten Windows PowerShell-Kommandos.

Es geht nicht darum, alles zu löschen, was man nicht erkennt - das ist ein großartiger Weg, sein Betriebssystem zu zerstören. Es geht darum, tatsächlich zu wissen, was hinter den Kulissen auf deinem Rechner läuft. Der Task-Manager wurde nicht dafür entwickelt, dir diesen Zugriff zu geben; das Terminal schon.

Verwandte Artikel