90 votes

Comment faire pour qu'un programme soit lancé au démarrage ?

J'ai une petite application avec un CheckBox que l'utilisateur peut définir s'il souhaite que l'application démarre avec Windows.

Ma question est la suivante : comment puis-je configurer l'application pour qu'elle soit lancée au démarrage ?

ps : J'utilise C# avec .NET 2.0.

3 votes

Si votre application fait quelque chose qui prend du temps ou consomme beaucoup de ressources au démarrage, comme vérifier les mises à jour sur Internet, vous pouvez envisager de mettre en place une minuterie pour que votre programme s'exécute un peu après le démarrage. L'une de mes bêtes noires est la douzaine de programmes sur mon ordinateur qui ralentissent tout en vérifiant les mises à jour au démarrage (je vous regarde particulièrement, iTunes et Java).

147voto

Spidey Points 660

Merci à tous d'avoir répondu si rapidement. Joel, j'ai utilisé votre option 2 et ajouté une clé de registre au dossier "Run" de l'utilisateur actuel. Voici le code que j'ai utilisé pour toute personne intéressée.

    using Microsoft.Win32;
    private void SetStartup()
    {
        RegistryKey rk = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

        if (chkStartUp.Checked)
            rk.SetValue(AppName, Application.ExecutablePath);
        else
            rk.DeleteValue(AppName,false);            

    }

5 votes

Qu'est-ce que la variable chkStartUp ?

8 votes

Je sais que je suis en retard, @fernado Santiago mais c'est sa case à cocher qui permet à l'utilisateur d'ajouter ou de supprimer le programme du démarrage.

1 votes

Cela n'est pas utile pour moi, cela me donne une erreur de permissions. Y a-t-il un moyen de prendre manuellement les permissions et de les libérer ensuite ?

119voto

Joel Coehoorn Points 190579

Plusieurs options, par ordre de préférence :

  1. Ajoutez-le au dossier Startup de l'utilisateur actuel. Cette méthode nécessite le moins d'autorisations possible pour que votre application fonctionne, et donne à l'utilisateur le plus de contrôle et de feedback sur ce qui se passe. L'inconvénient est qu'il est un peu plus difficile de déterminer s'il faut afficher la case déjà cochée la prochaine fois qu'il verra cet écran dans votre programme.
  2. Ajoutez-le à la HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run clé de registre. Le seul problème est que cela nécessite un accès en écriture au registre, qui n'est pas toujours disponible.
  3. Créer une tâche programmée qui se déclenche à la connexion de l'utilisateur
  4. Ajoutez-le à la HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run clé de registre. Le seul problème est que cela nécessite un accès en écriture au registre, qui n'est pas toujours disponible.
  5. Configurez-le comme un service Windows. Ne le faites que si vous realmente Je le pense, et vous êtes sûr de vouloir utiliser ce programme pour tous utilisateurs sur l'ordinateur.

Cette réponse est plus ancienne maintenant. Depuis que j'ai écrit ceci, Windows 10 est sorti, ce qui change la façon dont les dossiers du menu Démarrer fonctionnent... y compris l'élément Startup dossier. Je ne sais pas encore s'il est facile d'ajouter ou de supprimer un fichier dans ce dossier sans faire référence à la base de données interne que Windows utilise pour ces emplacements.

0 votes

Il existe des répertoires et des clés de registre pour l'utilisateur actuel et pour tous les utilisateurs. décidez de ce dont vous avez besoin pour votre application.

0 votes

Merci à tous d'avoir répondu si rapidement. Joel, j'ai choisi l'option 2.

0 votes

Service Windows oui, mais vous devez exécuter l'application avec l'option Impersonate As User. Sinon, le programme ne sera lancé qu'une seule fois et dans la session du système.

10voto

Justin R. Points 10122

Vous devez définir une clé de registre, généralement avec votre installateur. Voir http://www.windowsdevcenter.com/pub/a/oreilly/Windows/ron/startup_0401.html pour une présentation complète.

5voto

Jon Tackabury Points 10999

Vous pouvez créer une entrée de registre dans "HKCU \Software\Microsoft\Windows\CurrentVersion\Run "Sachez toutefois que cela peut fonctionner différemment sous Vista. Vos paramètres peuvent être "virtualisés" à cause de l'UAC.

3voto

Harper Shelby Points 13395

Si une application est conçue pour être lancée au démarrage de Windows (par opposition à la connexion d'un utilisateur), votre seule option est d'impliquer un service Windows. Vous pouvez soit écrire l'application en tant que service, soit écrire un simple service qui n'existe que pour lancer l'application.

Les services de rédaction peuvent être délicats et imposer des restrictions qui peuvent être inacceptables dans votre cas particulier. Un modèle de conception courant est une paire front-end/back-end, avec un service qui effectue le travail et une application front-end qui communique avec le service pour afficher les informations à l'utilisateur.

D'autre part, si vous voulez simplement que votre application démarre à la connexion de l'utilisateur, vous pouvez utiliser les méthodes 1 ou 2 que Joel Coehoorn a énumérées.

0 votes

Vous pouvez utiliser l'utilitaire NSSM pour exécuter une application arbitraire en tant que service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X