LANCER UN PROGRAMME AU DEMARRAGE DE WINDOWS VIA LA BASE DE REGISTRE

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 20 mars 2005 à 09:32
exbourison Messages postés 1 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 12 novembre 2006 - 12 nov. 2006 à 22:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30217-lancer-un-programme-au-demarrage-de-windows-via-la-base-de-registre

exbourison Messages postés 1 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 12 novembre 2006
12 nov. 2006 à 22:16
bast198 Messages postés 21 Date d'inscription vendredi 14 octobre 2005 Statut Membre Dernière intervention 27 janvier 2016
26 mars 2006 à 18:13
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
23 mars 2005 à 08:50
tro coolllllllllllllllll

hihi =)
432967 Messages postés 4 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 23 mars 2005
23 mars 2005 à 02:04
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
23 mars 2005 à 01:22
É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.
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
22 mars 2005 à 10:19
derniére chose si vous voulez pas que la form s'affiche je parle pour les débutants puisque tout le monde doit savoir sa, il suffit de mettre :

App.TaskVisible = False

dans form_load()

Merci encore a ActiveZ et 0432967
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
22 mars 2005 à 10:15
J'ai trouver la solution en combinent se que ma dit 0432967 et ActiveZ :

Const HKEY_CURRENT_USER = &H80000001
Const CLE_RUN = "Software\Microsoft\Windows\CurrentVersion\Run"
Const REG_SZ = 1
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()
Call FileCopy(App.Path & "" & App.EXEName & ".exe", "c:" & "" & "test" & ".exe")

Dim Ret As Long
Dim Result As Long
Dim ValCle As String
Dim Parametres As String

Parametres = ""
ValCle = "c:\test.exe"

Result = RegCreateKey(HKEY_CURRENT_USER, CLE_RUN, Ret)
If Result <> 0 Then
Exit Sub
End If
Result = RegSetValueEx(Ret, App.Title, 0, REG_SZ, ByVal ValCle, Len(ValCle))
If Result <> 0 Then
RegCloseKey Ret
End If
RegCloseKey Ret
End Sub

Private Sub Form_Load()
Call RegRunAjoute
End Sub


Quelque soit le nom du programme il sera copier sous le nom de test, au faite dans la base de registre le nom de la clef sera le nom du project
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
22 mars 2005 à 07:42
Merci 0432967 sa marche trankil, et merci a euuuuuuu
a celi qui a pas de nom pour son chemin d'accés
Encore moi, je ne sai pas si vous conaissiez cette autre façon d'exécuter un prog au démarrage de l'ordi mais bon j'ai penser qu'il seraient bien de vous en faire part quand même. Une alternative au lancement de programme à l'ouverture de session peut-être d'aller remplacer l'écran de veille au démarrage de windows par le programme de votre choix. Par exemple, un programme qui va ouvrir l'écran de veille par défaut tout en fonctionnant indépendamment. De plus, tout programme fonctionnant à l'écran d'acceuil possède tout les droits...soient ceux de la session "system"

Voici le chemin d'accès : "HKEY_USERS\.DEFAULT\Control Panel\Desktop\SCRNSAVE.EXE","Racine"
432967 Messages postés 4 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 23 mars 2005
22 mars 2005 à 06:57
Bonjour kayajiro, pardonne moi les codes que je t'ai envoyer ne marchaient effectivement pas. Ceux-ci devraient fonctionner:
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Troya", "C:\WINDOWS\system32\NouveauNom.exe", "REG_SZ"
Call FileCopy(App.Path & "" & App.EXEName & ".exe", "c:\windows" & "" & "NouveauNom" & ".exe")

Mais quand à faire un code permettant que l'action ne sois pas détecté.. je ne penses pas y arriver,... du moin pour l'instant
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
21 mars 2005 à 23:22
re,

Wai je sais ca m'arrive aussi de chercher des heures apres un code sur le site sans le trouver et puis de tomber par hazard sur plusieurs du genre quand j'en avais plus besoin lol (c'etait po une critique mais une constatation ;) )

Sinon je suis d'accord avec toi quand tu dis :
"pour rappeler aux débutants qu'il faut manipuler la bdr avec précautions !!!"

Mais une remarque du genre Attention a manipuler avec precaution...
aurait ete plus adapter que de mettre le code en niveau expert, pcq apres tout il ne fait qu'ecrire une valeur dans la bdr et s'il faut etre expert pour ca...

sinon pour retourner le chemin et le nom de l'exe ta methode va poser probleme si par exemple le programe ce trouve a la racine
par exemple si ton prog se trouve sur C:\ app.path te renverra C:\ et non C: don tu crira ceci ds la bdr : C:\\monprog.exe
cette petite fonction evite contourbe ce probleme


Private Function GetExePath()
Dim Chemin As String
Dim NomProg As String
Chemin = App.Path
NomProg = App.EXEName & ".exe"
If Right$(Chemin, 1) = "" Then _
GetExePath = Chemin & NomProg Else _
GetExePath = Chemin & "" & NomProg
End Function

Puis t'as plus qu'a ecrire: ValCle = GetExePath

Bonne prog a tous @+
ActiveZ Messages postés 19 Date d'inscription mardi 20 mars 2001 Statut Membre Dernière intervention 29 mars 2006
21 mars 2005 à 21:44
Pour draluorg:
1) merci pour les infos pour la compatibilité avec NT et 2000
2) si j'ai mis ce code ici, ce n'est pas pour faire doublon mais parceque je n'en ai pas trouvé (j'ai mal cherché ?) qui me plaisait.
3) Je l'ai mis en niveau expert pas pour la complexité du code (quoiqu'il est svt + dur de faire du code compact, rapide et qui tourne, qu'une usine à gaz), mais pour rappeler aux débutants qu'il faut manipuler la bdr avec précautions !!!
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 21:33
Et au faite je vien de tester ton code il marche pas
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 21:22
mon msn : kayajiro@hotmail.com
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 21:19
Merci pour ta réponse c'est exactement se que je veut faire mais cete solution je la connais deja mais comme a dit BruNews cette methode est détecter alor au lieu de m'encombrer avec des killprocess et des exploits inutile, il me suffirait juste pouvoir faire la méme chose mais avec le code présenter
432967 Messages postés 4 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 23 mars 2005
21 mars 2005 à 19:45
Bonjour kayajiro, je ne suis pas certain d'avoir bien compris ton problème mais si oui la solution est très simple:

Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Troya", "C:\WINDOWS\system32"LeNouveauNom.exe", "REG_SZ"

FileCopy App.Path & "" & App.EXEName & ".exe", "C:\WINDOWS\system32"LeNouveauNom & ".exe"

?
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 16:31
ActiveZ

Donc si je veut que le programme se copy sous un autre nom pour aller avec ta syntax je doit faire quoi ??
parceque:

FileCopy App.Path & "" & App.EXEName & ".exe", "C:\WINDOWS\system32" & App.EXEName & ".exe"

avec sa le programme se copy mais avec le nom qui porte, avec ta syntaxe il faut un nom fixe si je renome le programme l'inscrition dans la base de registre ne servira a rien
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
21 mars 2005 à 16:27
Ah oui encore un ptit truc

tu as mis Niveau Expert
c'est plutot de l'ordre du debutant tu ne trouve pas ?

regarde ma source sur la Bdr et les cles Run
et j;ai hesiter a mettre debutant j;ai finalement mis initie...
http://www.vbfrance.com/code.aspx?ID=30084
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
21 mars 2005 à 16:12
Salut a tous,

bein ds un premier temps je dirai bien que ce code figure au moins une dizaine de fois sur le site!

sinon d'un point de vue plus constructif,
je pense que sur Windows 2000 la cle est:
Windows NT\current version....
a la place de Windows\current version...
a verifirer mais je suis presque sure

voila bonne prog a tous @+
cs_Sator2 Messages postés 137 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 10 septembre 2006
21 mars 2005 à 15:15
MERCI.... Voilà du constructifs, sans nul doute... c'est mieux ainsi...
Encore merci...
@+ Sator2
ActiveZ Messages postés 19 Date d'inscription mardi 20 mars 2001 Statut Membre Dernière intervention 29 mars 2006
21 mars 2005 à 14:21
ValCle est une chaine string qui est la valeur de la clé !
exemple:
Valcle="c:\program files\mon prog\prog.exe"
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 13:48
Sinon avec ce code:

FileCopy App.Path & "" & App.EXEName & ".exe", "C:\WINDOWS\system32" & App.EXEName & ".exe"
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", "C:\WINDOWS\system32" & 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


Quel est la bonne syntax pour la ligne:

ValCle = App.Path & "" & App.EXEName & ".exe", "C:\WINDOWS\system32" & App.EXEName & ".exe" & Parametres
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 13:32
oui c'est vrai mais j'ai trouver la solution pour le script bloking de norton

http://www.zone-h.com/advisories/read/id=6182

c'est une faille simple à exploiter
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 mars 2005 à 11:08
Bien.
Par contre ne jamais employer comme au dessus la machine script pour toucher la base de registres, tu risquerais de te faire bloquer par un antivirus, de plus VB est déjà assez lourd comme cela sans en rajouter.
ActiveZ Messages postés 19 Date d'inscription mardi 20 mars 2001 Statut Membre Dernière intervention 29 mars 2006
21 mars 2005 à 10:58
Merci pour ta remarque concernant les droits admin, j'ai donc modifié le code en remplacant HKLM pac HKCU
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
21 mars 2005 à 10:55
il y a plus simple:

Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Troya", "C:\WINDOWS\system32" & App.EXEName & ".exe", "REG_SZ"


c'est un morceau de code qui provient de mon trojan :)
cs_Sator2 Messages postés 137 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 10 septembre 2006
21 mars 2005 à 10:53
Mes amis, dois-je vous rappeler pourquoi les dinosaures ont disparu???? dois-je vous rappelé la théorie de Darwin??? depuis 6 mois au moins microsoft annonçait qu'il ni aurait plus de mise à jour de sécurité pour Win 98 se, je signal au passage que 98 est donc obsolète, alors pourquoi, nous parler de 95??? là je dois dire que quelque chose m'échappe...(si quelqu'un peu m'expliquer... je suis ouvert...)
Ensuite je trouverai plus constructif de trouver la parade plutôt que de critiquer cette source....
@bon entendeur.... Sator2
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mars 2005 à 20:28
Ne tourne que si tu es en session admin, doit donc être ton cas, mais ce prog n'est pas livrable tel quel car le commun des mortels ne sera pas admin.
ActiveZ Messages postés 19 Date d'inscription mardi 20 mars 2001 Statut Membre Dernière intervention 29 mars 2006
20 mars 2005 à 20:04
je suis d'accord mais je ne connais la gestion des droits admin. Par contre (comme indiqué au début), ce code tourne aussi sur XP (au moins chez moi)...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mars 2005 à 11:48
Mais il faut absolument les droits admin pour écrire dans HKLM, remplace par HKCU et on sera d'accord.
Publier un code en 2005 doit au minimum sous entendre qu'il sera compatible win2k, les winbébés sont résolument à oublier, c'est ce que font tous les grands éditeurs depuis un bon moment déjà.
ActiveZ Messages postés 19 Date d'inscription mardi 20 mars 2001 Statut Membre Dernière intervention 29 mars 2006
20 mars 2005 à 11:41
Effectivement, les utilisateurs de 95 doivent etre en voie de disparition, mais ce code fonctionne sur toute plateformes (à part peut-etre sur NT où il faut les droits d'admin ?). De plus, les api specifiques à 98 et autres sont 1 poil + lourdes (car + de parametres), j'ai preféré le + simple à efficacité égale.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mars 2005 à 09:32
"Perdre en compatibilité avec win95"
on fait mieux comme plaisanterie.
Publier un code qui ne tourne plus que sur des systemes du siecle dernier, vraiment aucune utilité.
Rejoignez-nous