none
exécution de mon logiciel à l'ouverture de Windows RRS feed

  • Question

  • Bonjour,

    je désire savoir comment faire pour que mon l'ogiciel s'ouvre automatiquement l'orsque j'allume mon oridinateur. Peut-on l'inscrire dans le code ? Doit-on installer un composant spécial ? Merci d'avance.

                                                                        jojo

    lundi 9 août 2010 15:04

Réponses

  • Bonsoir,

    Avec les réponses j'ai testé, et ça se lance, ça donne ça :

    Dim ecrit As Microsoft.Win32.RegistryKey
     ecrit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
     ecrit.SetValue("NomLibre???", My.Application.Info.DirectoryPath & "\vraiNomProgram.exe")
    

    Attention : le fichier par défaut tant que ce n'est pas installé c'est DEBUG

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Modifié EhJoe lundi 9 août 2010 17:26 1
    • Proposé comme réponse EhJoe lundi 9 août 2010 17:27
    • Marqué comme réponse jojo96 jeudi 12 août 2010 08:16
    lundi 9 août 2010 17:26
  • Bonjour,

    Ce code doit-être exécuté lors de l'installation du logiciel. Il permet d'ajouter dans la base de registre les éléments nécessaire afin que Windows puisse démarrer votre application.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse jojo96 jeudi 12 août 2010 08:16
    jeudi 12 août 2010 07:57
    Modérateur
  • Bonjour,

    Tiens voici le code complet, car en fait il n'est pas mauvais de tester la présence de la clef au lencement avant d'écrire dans la BDR

    ' Accès BDR (regEdit.exe) par le code : lire, écrire, supprimer
    Option Explicit On
    Public Class Form1 ' objets = 3 (form1 + button1 + button2
    
     ' exemple de gestion du lancement d'un programme au démarrage
     ' Avant l'installation le répertoir par défaut de l'exe est "BIN" ... 
    
     Dim clefExiste As Boolean = False
     Dim laClef As String = "EhJoeTest" ' nom identifiant libre
     '
     Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Call TestClefExistante() ' écrit la clef si inexistante
      If clefExiste = True Then Exit Sub
      Dim ecrit As Microsoft.Win32.RegistryKey
      ecrit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      ecrit.SetValue("EhJoeTest", My.Application.Info.DirectoryPath & "\TestJoe.exe")
      MsgBox(laClef & vbLf & "Vient d'être enregistré (en démarrage) dans la BDR", vbInformation)
     End Sub
    
     Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Call TestClefExistante() ' supprime la clef si existante
      If clefExiste = False Then Exit Sub
      Dim detruit As Microsoft.Win32.RegistryKey
      detruit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      detruit.DeleteValue(laClef)
      MsgBox(laClef & vbLf & "A été détruite de la BDR ", vbExclamation)
     End Sub
    
     Sub TestClefExistante() ' Teste si une clef existe
      Dim teste = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      Dim lit As String = CType(teste.GetValue(laClef), String)
      Select Case lit
       Case Is <> "" 'existe
        clefExiste = True
        MsgBox("La clef existe déjà", vbExclamation)
       Case "" ' n'existe pas
        clefExiste = False
        MsgBox("La clef n'existe pas", vbExclamation)
      End Select
     End Sub
    
    End Class
    

    Cordialement.

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe jeudi 12 août 2010 10:49
    • Marqué comme réponse jojo96 vendredi 13 août 2010 08:10
    jeudi 12 août 2010 10:44

Toutes les réponses

  • Bonjour,

    Le plus simple : dans le dossier StartUp (démarrer)

    Sinon dans la base de registres qui devrait être :

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

    ou

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

    ou

    Dans le fichier Win.ini  (il me semble)

    On peut avec le code lui dire d'écrire au emplacements sus-cités, ce doit être dans la famille :

    My.Computer.Registry

    J'ai trouvé un exemple qui serait proche :

    Attention :

     

    l'application doit posséder des droits d'accès au registre suffisants.

    Ecriture dans le registre:

    Exemple: ajouter la clé "Nom" et la valeur "Philippe" au Registre de l'utilisateur en cours.

    Cela sous la clé "Noms" dans HKEY_CURRENT_USER du Registre.

    Dim key As Microsoft.Win32.RegistryKey
    key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Noms")
    key.SetValue("Nom", "Philippe")
    
    

    Personnellement je n'aime pas trop toucher à la BDR, il suffit d'une petite erreur de code parfois pour créer un grand problème...

    Tu peux trouver quelques exemples dans l'aide remarquable de Philippe Lasserre (Tutotiel_vbnet.pdf).

    Cordialement.

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Modifié EhJoe lundi 9 août 2010 16:43 modif 2 correction
    lundi 9 août 2010 16:32
  • salut pour cela je vois 2 solutions:

    tu mets un raccourci dans démarrage du menu démarrer

    ou tu utilise le registre ; les programme au demarage sont dans le registre Software\Microsoft\Windows\CurrentVersion\Run

    voila un code d'exemple

    
    
    'declaration d'un objet cle de registre
    Dim demarage_cle As RegistryKey
    
    demarage_cle =Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
    
    'inscription des valeurs (nom et chemin de l'application)
    demarage_cle.SetValue("appli", "C:\Program Files\appli\appli.exe")
    
    nb: ajoutez imports microsoft.win32 en haut

    j'espere avoir aider

    La vie serait plus simple si j'avais son code source. Never AFK
    lundi 9 août 2010 16:36
  • Bonsoir,

    Avec les réponses j'ai testé, et ça se lance, ça donne ça :

    Dim ecrit As Microsoft.Win32.RegistryKey
     ecrit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
     ecrit.SetValue("NomLibre???", My.Application.Info.DirectoryPath & "\vraiNomProgram.exe")
    

    Attention : le fichier par défaut tant que ce n'est pas installé c'est DEBUG

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Modifié EhJoe lundi 9 août 2010 17:26 1
    • Proposé comme réponse EhJoe lundi 9 août 2010 17:27
    • Marqué comme réponse jojo96 jeudi 12 août 2010 08:16
    lundi 9 août 2010 17:26
  • Excusez moi mais, vu mon jeune âge, j'ai de la peine à appliquer vos réponses.

    Pouvez-vous l'adapter à un adolescent ?

                              Jojo

    mercredi 11 août 2010 18:18
  • Bonjour,

    Qu'est ce qui vous pose problème ? La réponse de EhJoe est suffisemment simple et compréhensible...

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 11 août 2010 21:24
    Modérateur
  • Où faut-il mettre le code ? Suffit-il il de mettre le code ou faut il mettre l'exécutable dans un dossier spécial ? Faut-il mettre autre chose dans le code ?

                        Jojo

    jeudi 12 août 2010 07:42
  • Bonjour,

    Ce code doit-être exécuté lors de l'installation du logiciel. Il permet d'ajouter dans la base de registre les éléments nécessaire afin que Windows puisse démarrer votre application.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse jojo96 jeudi 12 août 2010 08:16
    jeudi 12 août 2010 07:57
    Modérateur
  • Merci beaucoup!

          Jojo

    jeudi 12 août 2010 08:17
  • Bonjour,

    Tiens voici le code complet, car en fait il n'est pas mauvais de tester la présence de la clef au lencement avant d'écrire dans la BDR

    ' Accès BDR (regEdit.exe) par le code : lire, écrire, supprimer
    Option Explicit On
    Public Class Form1 ' objets = 3 (form1 + button1 + button2
    
     ' exemple de gestion du lancement d'un programme au démarrage
     ' Avant l'installation le répertoir par défaut de l'exe est "BIN" ... 
    
     Dim clefExiste As Boolean = False
     Dim laClef As String = "EhJoeTest" ' nom identifiant libre
     '
     Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Call TestClefExistante() ' écrit la clef si inexistante
      If clefExiste = True Then Exit Sub
      Dim ecrit As Microsoft.Win32.RegistryKey
      ecrit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      ecrit.SetValue("EhJoeTest", My.Application.Info.DirectoryPath & "\TestJoe.exe")
      MsgBox(laClef & vbLf & "Vient d'être enregistré (en démarrage) dans la BDR", vbInformation)
     End Sub
    
     Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Call TestClefExistante() ' supprime la clef si existante
      If clefExiste = False Then Exit Sub
      Dim detruit As Microsoft.Win32.RegistryKey
      detruit = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      detruit.DeleteValue(laClef)
      MsgBox(laClef & vbLf & "A été détruite de la BDR ", vbExclamation)
     End Sub
    
     Sub TestClefExistante() ' Teste si une clef existe
      Dim teste = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
      Dim lit As String = CType(teste.GetValue(laClef), String)
      Select Case lit
       Case Is <> "" 'existe
        clefExiste = True
        MsgBox("La clef existe déjà", vbExclamation)
       Case "" ' n'existe pas
        clefExiste = False
        MsgBox("La clef n'existe pas", vbExclamation)
      End Select
     End Sub
    
    End Class
    

    Cordialement.

     


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe jeudi 12 août 2010 10:49
    • Marqué comme réponse jojo96 vendredi 13 août 2010 08:10
    jeudi 12 août 2010 10:44