Starten meiner Anwendung mit der Windows RunOnce-Methode

1

Ich führe mein Anwendungsinstallationsprogramm beim Start von Windows 7 aus, gefolgt von einem vom Installationsprogramm angeforderten Systemneustart. Für den Ansatz schreibe ich jetzt an den Registrierungsschlüssel RunOnce, sodass mein Installationsprogramm nur einmal ausgeführt wird und der Eintrag anschließend automatisch gelöscht wird.

Jetzt funktioniert der obige Ansatz mit einer Ausnahme: Ich kann den Desktop auf diese Weise erst dann anzeigen, wenn die Installation abgeschlossen und geschlossen ist.

Ich denke, dass dieses Verhalten für RunOnce-Methode Standard ist. Wollte das bestätigen und bei Bedarf kann ich die RunStatt- RunOnceTaste verwenden und den Eintrag von dort löschen, sobald meine Arbeit erledigt ist. Gibt es eine andere Möglichkeit, mit dem RunOnceSchlüssel herumzuspielen?

Bindestrich
quelle
Versuchen Sie, das Installationsprogramm im Grunde unbeaufsichtigt auszuführen? Ist der Installer ein MSI?
Kinnectus,
@ BigChris: Es ist NSIS-Installer. Eigentlich ist es das .NET Framework 4.0, das unbeaufsichtigt von meinem Installer installiert wird und einen Neustart des Systems erfordert. Und ich kann diesen Neustart nicht ignorieren, da meine Installation von einigen .NET-Komponenten abhängig ist.
Bindestrich
Aber Sie haben nicht genau gesagt, was Sie wollen ... Möchten Sie, dass Ihr Installer überhaupt nicht angezeigt wird, während er vollständig ausgeführt wird?
Kinnectus
@ BigChris: Ich möchte das Standardverhalten von Windows. Das heißt, mein Anwendungsinstallationsprogramm sollte genauso ausgeführt werden, wie wenn ich darauf doppelklicke. Mit Explorer-Ansicht. Was ich denke ist, dass der RunOnce-Ansatz den Explorer irgendwie blockiert.
Bindestrich
Möglicherweise. Was Sie vielleicht ausprobieren möchten, ist a Scheduled Task. Stellen Sie das Triggerzu sein At log onund ein Any user. Stellen Sie auf der SettingsRegisterkarte die Aufgabe auf Delete the task if it is not scheduled to run againund die Dropdown-Liste auf Immediately. Dadurch wird eine geplante Aufgabe erstellt, die ausgeführt wird, wenn sich der nächste Benutzer anmeldet. Da die Aufgabe nicht erneut ausgeführt werden soll, wird sie sofort gelöscht. Auf diese Weise wird eine einmalige Aufgabe erstellt, die ausgeführt wird, wenn Sie sich anmelden ...?
Kinnectus,

Antworten:

1

Die Antwort ist, dass ich die RunOnce-Methode von HKCU anstelle von HKLM verwenden muss. Die Reihenfolge, in der Windows die Startup-Einträge ausführt, ist:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServicesOnce

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunServices

<Logon Prompt>

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

Startordner

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce

Ref: INFO: Run, RunOnce, RunServices, RunServicesOnce und Startup

Bindestrich
quelle