Lancer un programme au demarrage de windows via la base de registre

Contenu du snippet

Pour lancer un programme au demarrage de windows avec la base de registre pour toutes versions de windows

Source / Exemple :


'il suffit de coller le code suivant et de faire appel à une case à cocher
'qui appelle RegRunAjoute si on veut que l'appli se lance au démarrage de windows
'et qui appelle RegRunOte pour le cas contraire.

Const HKEY_CURRENT_USER= &H80000001
Const CLE_RUN = "Software\Microsoft\Windows\CurrentVersion\Run"
Const REG_SZ = 1 ' Unicode nul terminated string
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Private Sub RegRunAjoute() 'ajoute la clé ds le registre pour demarrage auto
    Dim Ret as Long
    Dim Result as Long
    Dim ValCle As String
    Dim Parametres as string 'Parametres optionnels de la ligne de commande (ne pas oublier l'espace au début)

    Parametres=""
    ValCle = App.Path & "\" & App.EXEName & ".exe" & Parametres

    'Create a new key
    Result = RegCreateKey(HKEY_CURRENT_USER, CLE_RUN, Ret)
    If Result <> 0 Then
        MsgBox "Error while creating the Key!!"
        Exit Sub
    End If
'Set the key's value
    Result = RegSetValueEx(Ret, App.Title, 0, REG_SZ, ByVal ValCle, Len(ValCle))
    If Result <> 0 Then
        MsgBox "Error while creating the Key!!"
    End If
    'close the key
    RegCloseKey Ret
End Sub

Private Sub RegRunOte() 'enleve le demarrage auto du registre
    Dim Result as Long
    Dim Ret as Long
'Check if the specified key exists
RegOpenKey HKEY_CURRENT_USER, CLE_RUN, Ret
If Ret = 0 Then Exit Sub 'la clé n'existe pas
    
'Delete the key's value
Result = RegDeleteValue(Ret, App.Title)
If Result <> 0 Then
    MsgBox "Error while deleting the Key!!"
End If

'close the handle
RegCloseKey Ret

End Sub

'on peut utiliser d'autres api pour un reglage + fin mais on perd en compatibilité avec win 95
'voir l'excellent site http://www.mentalis.org/agnet/apiguide.shtml pour voir les alternatives et explications

Conclusion :


code simplifié, pas testé avec NT car necessite des autorisations (je crois)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (ActiveZ)