Ecrire clef base de registre

Signaler
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
-
 Dav6215 -
alors j ai deja chercheé sur la msdn mais j ai rien compris donc pas la peine d aller me dire "gna gna gna msdn" ;)
j aimerait savoir la syntaxe exacte svp pour ecrire une clef dans HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run afin qu un programme nomé programme.exe se lance à chaque demarage... merci d avance
++

24 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
void InsertInitWindows(BOOL bIns)
{
char szThis[300], szValue[] = "bnuRappels";
HKEY hKey;
DWORD dwDispo;
if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0, 0, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, 0, &hKey, &dwDispo) != ERROR_SUCCESS) return;
if(bIns) {
GetModuleFileName(NULL, szThis, 300); strcat(szThis, " s");
RegSetValueEx(hKey, szValue, 0, REG_SZ, (const unsigned char*)szThis, strlen(szThis));
}
else RegDeleteValue(hKey, szValue);
RegCloseKey(hKey);
}

Si tu ne peux pas comprendre MSDN, faut commencer par maitriser le C sinon tu n'avanceras pas.
BruNews, ciao...
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
c où que tu met "programme.exe" ??
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
j aimerait lancer automatiquement programme.exe qui se situe dans : C:\Program Files\prog\programme.exe comment faire svp ?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Puree mais tu abuses un peu, faut que je t'ecrive ton prog complet ?
Je te fournis exemple en 1 fonction prete a l'emploi, tu ne peux pas compiler cela dans un mini exemple et aller voir le resultat avec regedit ?
Si tu ne comprends pas les params, je repete: ETUDIE le C.
BruNews, ciao...
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
je veu po que tu m ecrive mon prog complet, juste la fonction pour ecrire la clef dans la base de registre c tout :(
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
Je veux pas faire le rabajoie, mais tu c'est que Windows s'occupe déja de ça. Tu met un raccourci dans le répertoire démarrage du menu démarrer et ton exe est lancer automatiquement.... Alors ne t'exite plus la dessus si tu as du mal avec le registre.
a+
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
oui mais nan moi je veu que ce soit le programme qui crée la clef pour le lancer automatiquement sinon ça sert a rien de faire un programme aussi pendant qu on y est
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Bon, voila du tout mache. Tu passes en param le nom du prog qui doit se lancer OU ALORS tu passes ZERO pour le retirer de la cle 'RUN'.

void InsertInitWindows(char *pszprog)
{
char szValue[] = "morgan1";
HKEY hKey;
if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, 0)) return;
if(pszprog) RegSetValueEx(hKey, szValue, 0, REG_SZ, (BYTE*)pszprog, strlen(pszprog));
else RegDeleteValue(hKey, szValue);
RegCloseKey(hKey);
}

BruNews, ciao...
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

Peite explication du code de brunews si t'as po compris (dites moi si je me trompe kk part)
void InsertInitWindows(BOOL bIns)
{
char szThis[300]/*va contenir le chemin d'acces du programme*/, szValue[] = "bnuRappels";/*nom de la valeur que l'on va inscrite dans la colonne "nom" de la base de registre*/
HKEY hKey;
DWORD dwDispo;
 if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, &dwDispo) != ERROR_SUCCESS) return;
if(bIns) {
GetModuleFileName(NULL, szThis, 300);/*On recupere le chemin d'acces du programme que l'on stocke dans szThis*/
strcat(szThis, " s");//euh???? on rajoute s
RegSetValueEx(hKey, szValue, 0, REG_SZ, (const unsigned char*)szThis, strlen(szThis));/*on "set" la valeur: ici le nom est "bnuRappels", le type "REG_SZ soit une chaine" et la valeur "szThis qui contient le chemin d'acces (genre c:\nomdupro.exe s"*/
}
else RegDeleteValue(hKey, szValue);//pour supprimer la cle
RegCloseKey(hKey);
}

Bon voila en esperant t'avoir aidé et ne m'etre pas trompe.
Bye,Xentor609
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
strcat(szThis, " s");//euh???? on rajoute s
Parce que je lui ai fait un copier coller d'un truc qui devait savoir (grace au param 's') s'il etait lance a la main ou depuis le 'RUN'.
BruNews, ciao...
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

ah ok, je trouvais bizarre aussi.
Bye,Xentor609
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
eu je capte pas c quoi "morgan1" et je ne voit pas où mettre le chemin du programme ( c:\programmes\programme.exe )
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
ah ok merci mais par contre le chemin du programme à mettre dans RUn est different du programme qui ecrit dans la base de registre donc pour
GetModuleFileName(NULL, szThis, 300);/*On recupere le chemin d'acces du programme que l'on stocke dans szThis*/
c pas bon
comment faire pour indiquer un chemin different ?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Tu vas me faire avoir une crise, faut lire la 1ere ligne:
"Tu passes en param le nom du prog" !!!!!!!!!!
C'est pourtant clair.

Demo installation dans 'RUN' :
InsertInitWindows("c:\\programmes\\programme.exe");

Demo suppression de 'RUN':
InsertInitWindows(0);

Et ne regarde plus ce qu'il y a dans la fonction, tu t'en sers et BASTA.
BruNews, ciao...
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

c'est tres simple, si tu connais le chemin d'acces du prog que tu veux mettre dans run suffit juste de faire:
.../tout le tralala avant sauf le getmodulefilename
char szValue[]="Nom du prog";
char szProg[]="C:\\Program Files\\prog\\programme.exe "
RegSetValueEx(hKey, szValue, 0, REG_SZ, (const unsigned char*)szProg, strlen(Prog));

Voila,
Bye,Xentor609
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
bon alors j ai fait:

void InsertInitWindows(BOOL bIns);
{

char szThis[300];
char szValue[]="programme";
char szProg[]="C:\\programmes\\programme.exe";
HKEY hKey;
DWORD dwDispo;
if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, &dwDispo) != ERROR_SUCCESS) return;
if(bIns) {
strcat(szThis, " s");//euh???? on rajoute s

RegSetValueEx(hKey, szValue, 0, REG_SZ, (const unsigned char*)szProg, strlen(Prog));
}
else RegDeleteValue(hKey, szValue);//pour supprimer la cle
RegCloseKey(hKey);

}

et à la compilation j ai:

`return' with no value, in function returning non-void

`bIns' undeclared (first use this function)

`Prog' undeclared (first use this function)
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

void InsertInitWindows(BOOL bIns)//y'a pas de ;
{

char szThis[300];
char szValue[]="programme";
char szProg[]="C:\\programmes\\programme.exe";
HKEY hKey;
DWORD dwDispo;
if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, &hKey, &dwDispo) != ERROR_SUCCESS) return;
if(bIns) {
strcat(szThis, " s");//euh???? on rajoute s

RegSetValueEx(hKey, szValue, 0, REG_SZ, (const unsigned char*)szProg, strlen(szProg));
}
else RegDeleteValue(hKey, szValue);//pour supprimer la cle
RegCloseKey(hKey);

}

Bye,Xentor609
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
oué ben rien qu en enlevant ";" ça me fait 22 erreurs à la compilation...
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
tu veut pas me montrer la source entiere du programme pour qu il marche stp ? :sad)
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
ça marche pas j ai des erreurs à la compilation