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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 53 137 fois - Téléchargée 29 fois

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

Ajouter un commentaire

Commentaires

exbourison
Messages postés
1
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
12 novembre 2006
-
bast198
Messages postés
21
Date d'inscription
vendredi 14 octobre 2005
Statut
Membre
Dernière intervention
27 janvier 2016
-
si je peut me permettre kaspersky fait une crise avec ca.
kayajiro
Messages postés
58
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2015
-
tro coolllllllllllllllll

hihi =)
432967
Messages postés
4
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
23 mars 2005
-
Je viens tout juste de trouver une clé dans le registre permettant d'exécuter un programme à l'ouverture session windows sans passer par le fameux CurrentVersion\Run. De plus, le programme inscrit dans cette clé s'exécutera bien avant les autres soit en même temps que l'explorer.exe. Ce qu'il y a de plus intéressant la dedans. par exemple pour kayajiro et sont tro... c'est que le prog inscrit ne sera pas visible dans msconfig! Bon asser bavardé, je vous donne la clé :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit "C:\WINDOWS\system32\userinit.exe"
Pour ce faire , vous n'avez qu'à rajouter une vigurle après userinit.exe sans bien sur effacer ce dernier!!!! puis rajouter la racine de votre prog.

Ex: C:\WINDOWS\system32\userinit.exe,c:\windows\lsass.exe

Bien sur , des droits d'administrateur seront nécessaire pour sa modification... puis faites bien attention de ne pas effacer userinit.exe.
432967
Messages postés
4
Date d'inscription
jeudi 9 novembre 2000
Statut
Membre
Dernière intervention
23 mars 2005
-
Étrange... mon nick n'est pas apparu.
Pi ah ouais un petit truc, si vous ne voulez pas que l'application puisse se fermer à partir du gestionnaire des tâches, vous n'avez qu'à la nommer csrss.exe ou tout autre nom de processus système critque.... Bien sur à utiliser avec le App.TaskVisible = False de kayajiro.

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)