Démarrage de l’application avant l’explorateur Windows

Certaines applications d’installation arrêtent (ou semblent arrêter) le démarrage normal de Windows. L’ordinateur démarre, l’utilisateur se connecte et le programme d’installation démarre avant les autres (comme l’explorateur Windows).

Comment puis-je reproduire ce comportement dans mon propre programme?

Par exemple

  • Démarrage du système d’exploitation
  • S’identifier
  • Le programme s’exécute, met à jour, etc.
  • Le rest des programmes s’exécutent (par exemple, Windows Explorer et ce qui fonctionne au démarrage)

Si vous souhaitez démarrer une application avant le démarrage du shell, vous pouvez append une valeur à la valeur Userinit dans le registre. Dans cette clé:

HKEY_LOCAL_MACHINE \ LOGICIEL \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon

Il y a une valeur nommée Userinit . Changez-le pour que votre programme soit exécuté avant userinit.exe. Par exemple, pour démarrer le bloc-notes avant que le shell / tout le rest ne soit initialisé:

C: \ WINDOWS \ system32 \ notepad.exe, C: \ Windows \ system32 \ userinit.exe

Utilisez des virgules pour séparer les programmes à démarrer.

Cela fonctionne pour Windows XP, Vista et 7.

Je ne l’ai pas essayé mais je suppose que cela est fait par l’entrée de registre

 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup 

Il y a encore plus de clés de registre – voir la liste complète documentée ici: Définition des clés RunOnce dans le registre

Mais pour votre cas d’utilisation, je vous recommande de démarrer votre application en tant que shell de bureau similaire à la solution proposée par “vcsjones”. Lorsque votre programme est terminé, vous pouvez appeler explorer.exe pour lancer le chargement du bureau normal.

Vous pouvez éventuellement envelopper un fichier de commandes Windows .bat autour de explorer.exe

 @echo off something.exe explorer.exe 

Mais cela ne garantirait pas vraiment qu’il est toujours démarré avant explorer.exe

Vous pouvez éventuellement modifier une valeur de registre pour sélectionner un autre «shell» au lieu de l’explorateur. .

Si c’est ce que vous cherchez réellement.

Vous devriez jeter un oeil au Planificateur de tâches Windows. Les tâches peuvent être planifiées pour s’exécuter lorsqu’un utilisateur (spécifique ou quelconque) se connecte. L’interface utilisateur fournie par Windows illustre ce que l’on peut réellement faire avec cette fonctionnalité Windows standard.

Une autre solution consiste à écrire un service Windows (Windows Installer .msi est en fait un service).

Je ne suis pas sûr que vous serez en mesure de bloquer Windows Explorer si …