Ich habe eine Anwendung, die Software auf dem lokalen Computer aktualisiert. Ich muss die Software aktualisieren, bevor sich der Benutzer anmeldet, und habe gelesen, dass das Ausführen der Anwendung über den RunServicesOnce
Registrierungsschlüssel für diesen Zweck wahrscheinlich am besten geeignet ist.
Aber ich kann diesen Schlüssel nicht finden regedit
und er erscheint nicht an der gleichen Stelle wie der HKLM RunOnce-Schlüssel in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
.
- Wo befindet sich dieser Schlüssel? Dasselbe unter Windows XP \ Vista \ 7 \ 8 \ 8.1 \ 10?
- Wie verwende ich es, gibt es optionale Parameter?
- Wie ermittle ich den Benutzer, unter dem die Anwendung ausgeführt wird? Wird sie von dem Benutzer ausgeführt, der den Schlüssel erstellt hat? Wenn ein
LocalSystem
Dienst den Schlüssel erstellt, wird er dann unter diesem Benutzer ausgeführtLocalSystem
?
Antwort1
Wo ist der Registrierungsschlüssel RunServicesOnce
Ich habe eine Anwendung, die Software auf dem lokalen Computer aktualisiert. Ich muss die Software aktualisieren, bevor sich der Benutzer anmeldet.
Programm vor der Benutzeranmeldung starten Windows 7
Wenn Sie möchten, dass es vor der Benutzeranmeldung gestartet wird, müssen Sie es als Dienst starten. Hier ist die Startreihenfolge der wichtigsten Registrierungsschlüssel, beginnend unmittelbar nach dem Lesen von bootmgr und endend mit den Programmverknüpfungseinträgen in den beiden Startordnern.
- HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute. Dies kann Anweisungen zum Planen der Ausführung von chkdsk, jedoch nicht von Benutzerprogrammen, enthalten.
- Als nächstes werden die Dienste gestartet, gefolgt von den Registrierungsschlüsseln RunServicesOnce und RunServices (sofern vorhanden).
- Der Benutzer meldet sich dann am System an
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserInit. Dies zeigt auf das Programm C:\WINDOWS\system32\userinit.exe und der Eintrag endet mit einem Komma. Andere Programme können von diesem Schlüssel aus gestartet werden, indem sie angehängt und durch ein Komma getrennt werden.
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell. Dies sollte nur einen Eintrag enthalten: explorer.exe.
- Programmeinträge in diesen 2 Registrierungsschlüsseln für ALLE BENUTZER beginnen als nächstes: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run und \RunOnce
- Programmeinträge in diesen 2 Registrierungsschlüsseln für CURRENT USER starten als nächstes: HKCU\Software\Microsoft\Windows\CurrentVersion\Run und \RunOnce
- Programme in den Autostart-Ordnern „Alle Benutzer“ und „Aktueller Benutzer“ werden zuletzt gestartet.
Wichtige Programme wie Antivirus und Firewall werden als Dienste am Anfang der Reihe gestartet. Die Symbole, die im Benachrichtigungsbereich (unten rechts auf dem Bildschirm) angezeigt werden, sind lediglich ihre Benutzeroberflächen, d. h. Optionen und Einstellungen.
Der zusätzliche Speicherort für 32-Bit-Software auf einem 64-Bit-Computer ist HKLM\SOFTWARE\Wow6432Node und HKCU.
Die Ausführungsschlüssel und die Suchreihenfolge
Auf die Registrierung wird zugegriffen, noch bevor der NT-Kernel geladen wird. Daher ist es sehr wichtig zu wissen, was der Computer beim Start lädt. Auf die folgende Liste von Registrierungsschlüsseln wird während des Systemstarts in der Reihenfolge ihrer Verwendung durch die verschiedenen Windows-Komponenten zugegriffen:
- HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
- HKLM\System\CurrentControlSet\Services (Startwert 0 zeigt Kerneltreiber an, die vor der Kernel-Initialisierung geladen werden)
- HKLM\System\CurrentControlSet\Services (Startwert 2, Autostart und 3, manueller Start über SCM)
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
- HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
- HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
- HKLM\Software\Microsoft\Windows\CurrentVersion\Run
- HKCU\Software\Microsoft\Windows\CurrentVersion\Run
- HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Ausführen
- HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Ausführen
- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler (nur XP, NT, W2k)
- HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
Notiz:Einige dieser Schlüssel werden auf Systemen mit einer 64-Bit-Architektur und einer 64-Bit-Version von Windows auch unter HKLM\Software\wow6432node angezeigt. Ich werde in diesem Beitrag nicht auf jeden dieser Schlüssel eingehen.
Führen Sie Ihren Dienst als LocalSystem-Konto aus, es sei denn, das Konto muss auf Netzwerkressourcen zugreifen. In diesem Fall erstellen Sie ein Domänendienstkonto, gewähren ihm Zugriff auf die entsprechenden Ressourcen und codieren dann seine Anmeldeinformationen fest, damit der Dienst ausgeführt werden kann. Auf dem lokalen Computer verfügt es über Administratorrechte für alles und erfordert kein Kennwort für die Dienstanmeldeinformationen.
Lokales Systemkonto
DerLokalesSystemKonto ist ein vordefiniertes lokales Konto, das vom Dienststeuerungsmanager. Dieses Konto wird vom Sicherheitssubsystem nicht erkannt, daher können Sie seinen Namen nicht in einem Aufruf des LookupAccountNameFunktion. Er verfügt über umfangreiche Berechtigungen auf dem lokalen Computer und fungiert als Computer im Netzwerk. Sein Token enthält dieNT-AUTORITÄT\SYSTEMUndBUILTIN\AdministratorenSIDs; diese Konten haben Zugriff auf die meisten Systemobjekte. Der Name des Kontos lautet in allen Gebietsschemas.\LokalesSystem. Der Name,LokalesSystemoder Computername\LokalesSystemkann auch benutzt werden.Dieses Konto hat kein Passwort. Wenn Sie das LocalSystem-Konto in einem Aufruf des Dienst erstellenoderChangeServiceConfig-Funktion werden alle von Ihnen angegebenen Kennwortinformationen ignoriert.